2010-11-14 82 views
1

现在我有两个哈希。我想在第二个散列中分配一个完整的散列给一个id。但是,我无法将该散列分配给其他散列。指定一个哈希散列

你可以指定一个哈希到另一个哈希通过只是说:

$nodes{$id}=%nodeHash; 

眼下这并不工作,因为当我说:

print Dumper(\%nodes); 

我得到这个结果:

$VAR1 = { 
     'c2' => '4/8', 
     'c1' => {} 
    }; 

对不起,如果这不完全有意义,我不是一个非常有经验的程序员,所以散列哈希是漂亮的COM丛。

+6

perlreftut perlreftut perlreftut – hobbs 2010-11-14 04:03:09

回答

19

聚合只存储标量。因此,使用ref运营商采取了裁判哈希:

$nodes{$id} = \%node_hash; 

,或者有时稍更安全,分配一个新的,复制旧的一成多吧,然后返回新的参考:

$nodes{$id} = { %node_hash }; 
+0

这是完美的。解决了我的问题! – user494216 2010-11-14 03:46:47

8

散列值必须是标量,所以你需要分配一个散列引用:

$nodes{$id} = \%nodeHash; 
5

不能使用哈希作为值,但你可以使用哈希的引用; $nodes{$id} = \%nodeHash;