Perl哈希数组,键返回错误

时间:2015-03-03 11:13:10

标签: perl

我有这个代码,其中array是一个哈希数组:

my $hash = $array[0];
print "REF: " . ref($hash) . "\n";
my @names = keys ($hash);

REF打印HASH,所以我知道它是一个哈希。

但是键函数会返回错误:

arg 1到键的类型必须是哈希

如何将$ hash用作哈希?

谢谢!

1 个答案:

答案 0 :(得分:1)

$hash不是哈希,它是哈希引用。因此,您需要取消引用它,然后才能在其上运行键。

最简单的方法:

keys %$hash; 

e.g。

foreach my $key ( keys %$hash ) {
    print $key, " => ", $hash -> {$key},"\n"; 
}

是的,我故意混合两种解除引用方法。 ->符号表示'取消引用此' - 它通常用于面向对象的东西。

对于更复杂的解除引用%$hash{'key'}是不明确的,因此您需要开始使用括号 - %{$hash{'key'}}

请参阅:

http://perldoc.perl.org/perlreftut.html

http://perldoc.perl.org/perlref.html