我正在开发脚本,即重用一些非常旧的perl代码。
这一行仍然给出了错误。不推荐使用散列作为参考。
%hash->{$_[$counter]} = $_[$counter+1];
我如何重构此代码,以便我不会收到错误。
答案 0 :(得分:28)
尝试
$hash{$_[$counter]} = $_[$counter+1];
答案 1 :(得分:21)
->{
左边的内容应该是哈希引用,而不是哈希。如果您有哈希,请省略->
,然后说出$hash{
。
谦虚地,%hash->{...}
应该执行(my $temp=%hash)->{...}
所做的:获取%hash的标量值(例如“1/8”,表示使用8个桶中的1个)并将其用作符号哈希引用(在使用严格“refs”下失败并出现错误)。但是由于一次事故,它被悄悄地重新解释为$hash{...}
。
这个错误有一天会被修复,但与此同时,人们会被警告要更改错误的代码。