我有這樣的代碼,其中數組是散列的數組: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