Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:不推荐使用散列作为引用_Perl - Fatal编程技术网

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

Perl:不推荐使用散列作为引用,perl,Perl,我正在开发脚本,即重用一些非常旧的perl代码 这一行仍然告诉我使用散列作为引用的错误是不推荐的 %hash->{$_[$counter]} = $_[$counter+1]; 如何重构此代码,以避免收到错误。试试看 $hash{$_[$counter]} = $_[$counter+1]; ->{左边应该是散列引用,而不是散列。如果有散列,请省略->,只说$hash{ 学究般地,%hash->{…}应该做(my$temp=%hash)->{…}所做的事情:获取%hash的标量值(

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

这一行仍然告诉我使用散列作为引用的错误是不推荐的

  %hash->{$_[$counter]} = $_[$counter+1];
如何重构此代码,以避免收到错误。

试试看

$hash{$_[$counter]} = $_[$counter+1];

->{
左边应该是散列引用,而不是散列。如果有散列,请省略
->
,只说
$hash{

学究般地,
%hash->{…}
应该做
(my$temp=%hash)->{…}
所做的事情:获取%hash的标量值(例如,“1/8”,表示使用了8个存储桶中的1个),并将其用作符号hash引用(在使用严格的“refs”时出错)。但由于一次事故,它被悄悄地重新解释为
$hash{…}

这个错误总有一天会被修复,但与此同时,人们会被警告更改错误的代码。

知道Perl的诊断消息记录在perldiag中也很有用,可以在这里()或直接在命令行(
perldoc perldiag
)上访问。警告是由于该行的行为不符合文档规定。标量上下文中的
->
的LHS应为引用,这是标量,并且
%hash
不应返回对self的引用。