Perl是警告我,在我的程序中使用伪hashs:为什么Perl警告我使用伪哈希?
伪哈希已过时
如何转换下面的代码,这样是不使用伪hashs
foreach my $hash (@arrayOfHash) {
print keys %{$hash};
}
Perl是警告我,在我的程序中使用伪hashs:为什么Perl警告我使用伪哈希?
伪哈希已过时
如何转换下面的代码,这样是不使用伪hashs
foreach my $hash (@arrayOfHash) {
print keys %{$hash};
}
该问题不在该代码中。问题是@arrayOfHash
实际上包含arrayrefs,而不是hashrefs。
如果由于某种原因你不能修复@arrayOfHash
,你可以解决它这样做:
foreach my $hash (@arrayOfHash) {
my %hash = @$hash;
print keys %hash;
}
你应该总是发布完整的示例代码.....
不知道是什么你在做,但你可能混合了数组和数组refs和/或哈希和hashrefs。我通常只使用引用,因为我喜欢的语法好,我想是一致的:
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
这是它被弃用然后一件好事。 – 2009-10-18 17:11:41
“解决它”有点慷慨,因为我们和提问者似乎都不知道@arrayOfHash究竟是什么。先弄清楚,然后做点什么。您的代码只会在一个有限的错误情况下有用。 – ysth 2009-10-18 17:47:56