我正在寻找Perl警告的解决方案
“参考的关键是实验性的”
我从这样的代码中得到了这个:
foreach my $f (keys($normal{$nuc}{$e})) {#x, y, and z
我在StackOverflow上发现了类似的东西:
Perl throws "keys on reference is experimental"
但我不知道如何在我的情况下应用它。
如何在不抛出此错误的情况下获取多个键控哈希的键?
答案 0 :(得分:8)
keys %{$normal{$nuc}{$e}}
E.g。首先取消引用它。
如果你有一个开头的参考,你不需要{}
例如:
my $ref = $normal{$nuc}{$e};
print keys %$ref;
答案 1 :(得分:5)
问题是$normal{$nuc}{$e}
是哈希引用,而keys
将正式接受哈希。解决方案很简单 - 您必须取消引用引用 - 您可以通过编写来解决此问题
for my $f ( keys %{ $normal{$nuc}{$e} } ) { ... }
但将哈希引用提取到中间变量可能更明智。这将使您的代码更清晰,如此
my $hr = $normal{$nuc}{$e};
for my $f ( keys %$hr ) { ... }
我建议你写一些更有意义的变量名。 $f
和$e
可能会在你写这篇文章的过程中告诉你很多,但肯定会引起别人的问题,甚至可能会在一年或两年内找回你
同样,我确信标识符比$hr
更好,但我不知道您的数据结构的各个级别的含义所以我无法&# 39;做得更好。请将其称为与其指向的数据
答案 2 :(得分:-1)
keys $hash_ref
是引用上的警告键是实验的原因
解决方案:
keys %{ $hash_ref }
参考: