请问这两种哈希初始化方法有什么区别?
第一种方法:
为什么第二种方法返回引用而不是实际值?
$items{"food"} = "4.4";
$items{"water"} = "5.0";
$items{"shelter"} = "1.1";
foreach $item (keys $items) {
print "$item\n";
}
输出结果为:
food
water
shelter
第二种方法:
%items = {
'food' => '4.4',
'water' => '5.0',
'shelter' => '1.1'
};
foreach $item (keys %items) {
print "$item\n";
}
输出结果是一个哈希引用:
HASH(0x8cc41bc)
为什么第二种方法返回引用而不是实际值?
%hash
。因此,只有一个键:哈希引用的字符串表示形式和相应的undef
值。投票关闭。 - Sinan Ünürmy %h = ( ... )
的形式,或者将其分配给一个标量,即my $h = { ... }
。如果你选择后者,使用keys %$h
。 - Sinan Ünür%hash = { }
不是打字错误,这是一个非常普遍的误解。(我昨天刚向某人指出了同样的问题。)虽然它不完全是重复的,但最好将 OP 指向 为什么有些哈希使用花括号初始化,而有些使用圆括号?,而不是关闭为打字错误。 - ThisSuitIsBlackNot