2012-10-06 87 views
2

我有散列散列的散列引用。從散列引用複製散列

裁判 - > HASH1
HASH2
等等

我試圖複製2個散列用來進行相互比較。

my %hash1 = %$ref->{ $name1}; // but I can't get it to work. 
    my %hash2 = %$ref->{ $name2}; 

我得到:參考找到哪裏,甚至大小列表預期在。

我知道我沒有宣佈這個權利,所以任何幫助,將不勝感激。

回答

5

你在這裏有錯誤:%$ref->{ $name1};,這是不正確的。請檢查下面的示例。

#!/usr/bin/perl 

use strict; 
use Data::Dumper; 

my $ref = { 
    hash1 => { a => 1, b => 2 }, 
    hash2 => { c => 3, d => 3 }, 
}; 

my $name = 'hash1'; 
my %hash = %{ $ref->{$name} }; # right dereference 
print Dumper(\%hash); 
+0

的偉大工程。謝謝 – user1712832

+2

@ user1712832,太好了。所以接受這個答案。 – snoofkin

+0

「隱含解引用」是什麼意思?我看不到任何適用的方法 – Borodin

3

由於運算符優先級,你需要做這種方式:

my %hash1 = %{ $ref->{$name} }; 
+0

很好用。謝謝。 – user1712832

+0

+1:比fxzuz更好的答案 – Borodin