如何在Perl中解决“现在禁止标量上的实验值”的问题

时间:2019-02-19 07:48:49

标签: perl

在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 {
       ......
    }

1 个答案:

答案 0 :(得分:5)

each接受哈希,而不是引用。 [1] 因此,

while (my ($ip, $val2) = each($val))

应该是

while (my ($ip, $val2) = each(%$val))

  1. Perl 5.12、5.14和5.16允许使用引用。这是一个错误。

    Perl 5.18、5.20和5.22仍然允许它,但是警告您是否这样做。

    Perl 5.24恢复了此添加。