我希望在只有当我有一个定义的值来分配散列创建一个键/值对。只有创造Perl的哈希键/值对当值定义
我目前这样做:
$hash{key1} = $val1 if defined $val1;
这是好的 - 但是当$val1
是复杂的可以成为恼人。有没有一种方法,我可以整齐地得到相同的结果,而不必说$val1
两次?下面的测试脚本可能有助于澄清我试图达到的目标。
use strict;
use warnings;
use Test::More tests => 1;
my %hash;
my $val1 = undef; # Explicitly undef
my $val2 = 10;
$hash{key1} = $val1 if defined $val1;
$hash{key2} = $val2 if defined $val2;
my %expected = ('key2', 10);
is_deeply(\%hash, \%expected, 'Hashes compare');
谢谢安迪 - 我将回答的问题提到了这个问题上,因为它不仅在功能上等同 - 它很整洁,清晰 - 我一直在寻找。 –