下面的代码来自一个旧的Perl脚本。
我该如何重写上面的代码,以便Perl不会抱怨“使用哈希作为引用已被弃用”?我尝试了各种方法,但仍然无法完全理解Perl编译器想让我做什么。
print "%{@{$noss}[$i]}->{$sector} \n\n";
我该如何重写上面的代码,以便Perl不会抱怨“使用哈希作为引用已被弃用”?我尝试了各种方法,但仍然无法完全理解Perl编译器想让我做什么。
应该仅仅是没有更多的。print "%{@{$noss}[$i]}->{$sector} \n\n";
print "$noss->[$i]{$sector} \n\n";
甚至更多
print "$$noss[$i]{$sector} \n\n";
不需要那些复杂的手续。
因此,你的数组元素通常为$foo[$i]
,变成了${$noss}[$i]
。该表达式本身是一个哈希引用,因此要从该哈希中获取元素,而不是使用$foo{$sector}
,你需要使用${ ${$noss}[$i] }{$sector}
。
这也可以以各种其他形式出现,例如$noss->[$i]{$sector}
;请参见http://perlmonks.org?node=References+quick+reference以获得易于理解的简单规则。
$noss->[$i]{$sector}
真的是最好的选择。这种语法更易读,因为它清楚地显示了 $noss
是一个引用,你正在取出它的第 $i
个元素,并进一步从该元素中获取 $sector
键。perldoc perlreftut
,特别是其中的“使用规则”。了解这两个“使用规则”以及额外的“箭头规则”(只有三个规则)将让你更好地掌握如何使用引用。