1

割り当てる値が定義されている場合にのみ、ハッシュでキーと値のペアを作成したいと考えています。

私は現在これをやっています:

$hash{key1} = $val1 if defined $val1;

これは問題ありませんが、$val1複雑な場合は面倒になる可能性があります。$val12回言わなくても同じ結果をきちんと得る方法はありますか? 以下のテスト スクリプトは、私が達成しようとしていることを明確にするのに役立つかもしれません。

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');
4

2 に答える 2