在Perl 5.26.2中,我得到:
Experimental each on scalar is now forbidden at a.plx line 67.
Type of arg 1 to each must be hash or array (not private variable) at a.plx
line 67, near "$val)"
Execution of a.plx aborted due to compilation errors.
第67行位于其中
67 while (my ($ip, $val2) = each($val))
68 {
......
}
答案 0 :(得分:5)
each
接受哈希,而不是引用。 [1] 因此,
while (my ($ip, $val2) = each($val))
应该是
while (my ($ip, $val2) = each(%$val))
Perl 5.12、5.14和5.16允许使用引用。这是一个错误。
Perl 5.18、5.20和5.22仍然允许它,但是警告您是否这样做。
Perl 5.24恢复了此添加。