下面的代码来自旧的Perl脚本.
print "%{@{$noss}[$i]}->{$sector} \n\n";
Run Code Online (Sandbox Code Playgroud)
我应该如何重写上面的代码,以便Perl不会抱怨"使用散列作为引用已被弃用"?我已经尝试了各种各样的方法,但我仍然无法完全了解Perl编译器希望我做的事情.
tch*_*ist 10
Run Code Online (Sandbox Code Playgroud)print "%{@{$noss}[$i]}->{$sector} \n\n";
应该只是
print "$noss->[$i]{$sector} \n\n";
Run Code Online (Sandbox Code Playgroud)
甚至
print "$$noss[$i]{$sector} \n\n";
Run Code Online (Sandbox Code Playgroud)
没有那么严格.
猜测$ noss是对一组哈希引用的引用,你可以通过遵循一个简单的规则来构建一个正确的表达式,该规则用表达式替换通常是数组或哈希名称(不包括$/@ /%)花括号中的引用.
所以你的数组元素通常会$foo[$i]变成${$noss}[$i].该表达式本身就是一个hashref,所以要从该哈希中获取一个元素,而不是$foo{$sector}使用${ ${$noss}[$i] }{$sector}.
这也可以以各种其他形式出现,例如$noss->[$i]{$sector}; 请参阅http://perlmonks.org?node=References+quick+reference以了解简单易懂的规则.