我有这样的代码,其中数组是散列的数组:Perl数组,键返回一个错误
my $hash = $array[0];
print "REF: " . ref($hash) . "\n";
my @names = keys ($hash);
的REF打印井,所以我知道这是一个哈希值。
但随后键函数返回一个错误:
ARG 1键的类型必须为哈希
我如何使用$哈希作为哈希?
谢谢!
我有这样的代码,其中数组是散列的数组:Perl数组,键返回一个错误
my $hash = $array[0];
print "REF: " . ref($hash) . "\n";
my @names = keys ($hash);
的REF打印井,所以我知道这是一个哈希值。
但随后键函数返回一个错误:
ARG 1键的类型必须为哈希
我如何使用$哈希作为哈希?
谢谢!
$hash
不是散列,它是散列引用。因此,您需要先取消引用它,然后才能在其上运行密钥。这样做的
最简单的方法:
keys %$hash;
例如
foreach my $key (keys %$hash) {
print $key, " => ", $hash -> {$key},"\n";
}
是的,我故意混合两种解除引用方法。 ->
符号表示'取消引用this' - 它通常用于面向对象的东西。
对于更复杂的解引用%$hash{'key'}
是不明确的,所以你开始需要括号 - 例如%{$hash{'key'}}
。
参见:
工程就像一个魅力! – 2015-03-03 11:33:48
的REF打印HASH所以你知道它是*参考*的哈希值。 – ikegami 2015-03-03 13:23:18