2015-03-03 62 views
1

我有這樣的代碼,其中數組是散列的數組:Perl數組,鍵返回一個錯誤

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

的REF打印井,所以我知道這是一個哈希值。

但隨後鍵函數返回一個錯誤:

ARG 1鍵的類型必須爲哈希

我如何使用$哈希作爲哈希?

謝謝!

+0

的REF打印HASH所以你知道它是*參考*的哈希值。 – ikegami 2015-03-03 13:23:18

回答

1

$hash不是散列,它是散列引用。因此,您需要先取消引用它,然後才能在其上運行密鑰。這樣做的

最簡單的方法:

keys %$hash; 

例如

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

是的,我故意混合兩種解除引用方法。 ->符號表示'取消引用this' - 它通常用於面向對象的東西。

對於更復雜的解引用%$hash{'key'}是不明確的,所以你開始需要括號 - 例如%{$hash{'key'}}

參見:

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

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

+0

工程就像一個魅力! – 2015-03-03 11:33:48