これら2つのハッシュ初期化メソッドの違いは何ですか?Perlのハッシュペアの印刷
第一の方法:
$items{"food"} = "4.4";
$items{"water"} = "5.0";
$items{"shelter"} = "1.1";
foreach $item (keys $items) {
print "$item\n";
}
出力である:
food
water
shelter
第2の方法:
%items = {
'food' => '4.4',
'water' => '5.0',
'shelter' => '1.1'
};
foreach $item (keys %items) {
print "$item\n";
}
出力は、ハッシュリファレンスである:
HASH(0x8cc41bc)
なぜ第二の方法ではなく、実際の値の参照を返すでしょうか?
2番目のケースでは、「%hash」に対する匿名ハッシュへの単一の参照を割り当てました。したがって、ハッシュリファレンスの文字列化とそれに対応する 'undef'値のキーは1つだけです。投票を終了する。 –
Sinanさん、ありがとうございました.2番目のインスタンスを修正するにはどうすればよいですか? – Brite
'my%h =(...)'のように、キーの値のペアのリストを割り当てるか、スカラー、つまり 'my $ h = {...}'に割り当てる必要があります。後者の場合は 'keys%$ h'を使います。 –