%{$var}和%$var有什么区别?我试过这段代码,但有错误:
参考文献中的每一个都是在test.pl第21行进行实验的。引用上每个参数的类型必须是test.pl第21行的不加祝福的hashref或arrayref。
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";
}
}发布于 2016-04-26 09:59:00
使用%$HoH{$i},您可以对$HoH进行哈希引用,而在%{$HoH{$i}}中,您可以对$HoH{$i}进行哈希引用,这正是您想要的.以及,代码上的use strict :-)
发布于 2016-04-26 10:12:24
这是由于解析哈希与订阅哈希的优先级不同。它适用于第二个版本-- %{ $HoH{$i} } --因为您毫不含糊地声明$HoH{$i}查找返回的值本身就是hashref。
而%$HoH{$i}被解释为%{ $HoH }{$i} - ie.在表达式$HoH被解释为hashref (它不是)之后,订阅就会发生。%HoH是一个散列,但没有使用$HoH,也就是说它是未定义的。
https://stackoverflow.com/questions/36861408
复制相似问题