0

以下の式で繰り返される用語を削除するにはどうすればよい$e->{aa}{$_}ですか?

my $e = {aa=>{aa=>1,bb=>2,c=>undef}};
my $s = " ". (defined $e->{aa}{$_} ? $e->{aa}{$_} :'null') ." ";
4

2 に答える 2

5

v5.10 以降では、真偽の代わりに定義済みかどうかをテストする defined -or 演算子//||を使用できます。それで:

my $s = ($e->{aa}{$_} // 'null') . ' ';
于 2013-09-12T13:32:41.113 に答える
0

何らかの理由で 5.10 より前のバージョンに固執している場合は、doブロックを使用できます。

my $s = do { my $x = $e->{aa}{$_}; defined $x ? "$x" : 'null';};

演算子が導入された//理由 (ご存知かもしれませんが)

my $s = $e->{aa}{$_} || 'null'

$sハッシュ エントリが定義されていても、0 や "" などの false 値が含まれている場合でも、"null"に設定されます。

于 2013-09-12T15:03:53.253 に答える