我希望在只有當我有一個定義的值來分配散列創建一個鍵/值對。只有創造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');
謝謝安迪 - 我將回答的問題提到了這個問題上,因爲它不僅在功能上等同 - 它很整潔,清晰 - 我一直在尋找。 –