Perl警告我在程序中使用伪哈希:
伪哈希已被弃用
如何修改以下代码以不使用伪哈希
foreach my $hash (@arrayOfHash) {
print keys %{$hash};
}
问题不在那段代码中。问题在于@arrayOfHash
实际上包含的是数组引用,而不是哈希引用。
如果由于某种原因你无法修复@arrayOfHash
,你可以通过以下方式解决:
foreach my $hash (@arrayOfHash) {
my %hash = @$hash;
print keys %hash;
}
您应该始终发布完整的示例代码.....
不确定您正在做什么,但您可能会混合使用数组和数组引用以及哈希和哈希引用。我通常只使用引用,因为我喜欢语法更好,也喜欢保持一致性:
use strict;
use warnings;
my($arrayrefOfHashrefs) = [
{foo => 'bar',
bar => 'baz'},
{Hello => 'world'},
];
foreach my $href (@$arrayrefOfHashrefs) {
print join("\n", keys %$href);
print "\n\n";
}
将会输出:
C:\Temp>perl foo.pl
bar
foo
Hello