【发布时间】:2018-01-07 13:41:39
【问题描述】:
我们有一些遗留代码抛出“不能使用哈希作为参考”perl 错误。之前的“修复”是关闭警告,但是新的 perl 已经将警告变成了一个硬错误,所以现在必须有人真正修复这个问题。
代码看起来像这样...
foreach my $a (keys %{$x->{'y'}}) {
my $b = %$x->{'y'}->{$a};
<some other stuff>
}
我的理解是像%j->{'k'}这样的东西应该转换成$j{'k'},但是有两个指针的%$东西我处理不了了,因为我只懂这是最一般的级别。
似乎只有循环内的行导致错误,但我将 foreach 包括在内以供参考。
是否清楚原作者试图做什么?是否有明显的修复方法可以一劳永逸地解决这个问题?
谢谢。
【问题讨论】:
-
$x是一个散列reference(根据使用情况判断)。要从中检索键的值,我们取消引用它,如$x->{key}。具体不像%$x->{}。 (很久以前有效。)只有当我们说%$x(比如keys)时才需要整个哈希。在这里,您的散列具有值的散列引用,因此keys %$x->{y}将这些值解引用为散列,$x->{y}->{$a}从这些散列引用之一($a之一)中获取一个值。
标签: perl hash reference deprecated