我有这个代码,其中array是一个哈希数组:
my $hash = $array[0];
print "REF: " . ref($hash) . "\n";
my @names = keys ($hash);
REF打印HASH,所以我知道它是一个哈希。
但是键函数会返回错误:
arg 1到键的类型必须是哈希
如何将$ hash用作哈希?
谢谢!
答案 0 :(得分:1)
$hash
不是哈希,它是哈希引用。因此,您需要取消引用它,然后才能在其上运行键。
最简单的方法:
keys %$hash;
e.g。
foreach my $key ( keys %$hash ) {
print $key, " => ", $hash -> {$key},"\n";
}
是的,我故意混合两种解除引用方法。 ->
符号表示'取消引用此' - 它通常用于面向对象的东西。
对于更复杂的解除引用%$hash{'key'}
是不明确的,因此您需要开始使用括号 - %{$hash{'key'}}
。
请参阅: