以下の式で繰り返される用語を削除するにはどうすればよい$e->{aa}{$_}
ですか?
my $e = {aa=>{aa=>1,bb=>2,c=>undef}};
my $s = " ". (defined $e->{aa}{$_} ? $e->{aa}{$_} :'null') ." ";
以下の式で繰り返される用語を削除するにはどうすればよい$e->{aa}{$_}
ですか?
my $e = {aa=>{aa=>1,bb=>2,c=>undef}};
my $s = " ". (defined $e->{aa}{$_} ? $e->{aa}{$_} :'null') ." ";
v5.10 以降では、真偽の代わりに定義済みかどうかをテストする defined -or 演算子//
||
を使用できます。それで:
my $s = ($e->{aa}{$_} // 'null') . ' ';
何らかの理由で 5.10 より前のバージョンに固執している場合は、do
ブロックを使用できます。
my $s = do { my $x = $e->{aa}{$_}; defined $x ? "$x" : 'null';};
演算子が導入された//
理由 (ご存知かもしれませんが)
my $s = $e->{aa}{$_} || 'null'
$s
ハッシュ エントリが定義されていても、0 や "" などの false 値が含まれている場合でも、"null"に設定されます。