%{$var}
和%$var
之间有什么区别?我试过这段代码,但是有错误:
每个参考文献都是test.pl第21行的实验。参数类型 每个on引用必须是test.pl中的unrefsed hashref或arrayref 第21行。
use feature 'say';
%HoH = (
1 => {
husband => "fred",
pal => "barney",
},
2 => {
husband => "george",
wife => "jane",
"his boy" => "elroy",
},
3 => {
husband => "homer",
wife => "marge",
kid => "bart",
},
);
for ($i = 1; $i <= 3; $i++) {
while ( ($family, $roles) = each %$HoH{$i} ) {
say "$family: $roles";
}
}
但是这段代码很好用:
use feature 'say';
%HoH = (
1 => {
husband => "fred",
pal => "barney",
},
2 => {
husband => "george",
wife => "jane",
"his boy" => "elroy",
},
3 => {
husband => "homer",
wife => "marge",
kid => "bart",
},
);
for ($i = 1; $i <= 3; $i++) {
while ( ($family, $roles) = each %{$HoH{$i}} ) {
say "$family: $roles";
}
}
答案 0 :(得分:7)
使用%$HoH{$i}
进行$ HoH的哈希引用,而%{$HoH{$i}}
使用$HoH{$i}
进行哈希引用,这就是你想要的...而且,{{1你的代码: - )
答案 1 :(得分:2)
由于解析哈希与下标哈希的优先级不同。它适用于第二个版本 - %{ $HoH{$i} }
- 因为您明确指出查找$HoH{$i}
返回的值本身就是一个hashref。
而%$HoH{$i}
被解释为%{ $HoH }{$i}
- 即。表达式$HoH
被解释为hashref之后发生了下标 - 它不是。 %HoH
是哈希值,但未使用$HoH
- 即它未定义。