Perl:不推荐使用散列作为引用

Mej*_*jmo 23 perl

我正在开发脚本,即重用一些非常旧的perl代码.

这行仍然给出了错误.不推荐使用散列作为引用.

  %hash->{$_[$counter]} = $_[$counter+1];
Run Code Online (Sandbox Code Playgroud)

我如何重构此代码,以便我不会收到错误.

cni*_*tar 29

尝试

$hash{$_[$counter]} = $_[$counter+1];
Run Code Online (Sandbox Code Playgroud)


yst*_*sth 21

左边的内容->{应该是哈希引用,而不是哈希.如果你有一个哈希,省略,->然后说$hash{.

小心翼翼,%hash->{...}应该做的是(my $temp=%hash)->{...}:获取%hash的标量值(例如"1/8",表示使用的8个桶中的1个)并将其用作符号哈希引用(在use strict"refs"下使用错误失败).但由于一次事故,它被悄然重新诠释为$hash{...}相反.这个错误有一天会被修复,但与此同时,人们会被警告要更改错误的代码.