2011-10-13 46 views
1
my $hash_ref = { a => 1, b => 2 }; 
my $tmp_ref = $hash_ref; 

代码如上,我想更改哈希值并插入一些新的对。我的问题如下:perl哈希引用的参考

  1. 我怎样才能通过$tmp_ref
  2. 实现这些是有可能改变或插入引用的参考?
  3. 它是参考的参考,参考和具体的数据结构(这里是散列)一致吗?

非常感谢!

+0

你可以得到一个参考的参考,但我认为你不需要。直接引用就足够了。但是可能有用的是嵌套的数据结构,例如其哈希值是对内部哈希引数的引用的哈希引用 – stevenl

回答

2

两个$hash_ref$tmp_ref将把相同的哈希所以你可以添加一些$hash_ref

$tmp_ref->{c} = 3; 

然后,两个$hash_ref$tmp_ref指同一(a => 1, b => 2, c => 3)哈希值。

引用是Perl的指针版本。

3

在这种情况下,$tmp_ref不是对$hash_ref的引用,它只是$hash_ref值的一个副本。

您可以$tmp_ref访问的散列就像你使用$hash_ref

$tmp_ref->{a}; # 1 

$tmp_ref->{foobar} = "hi"; 
$tmp_ref->{foobar}; # "hi" 

如果你真正想让$tmp_ref一个参考$hash_ref,这里是你如何访问原始哈希:

$tmp_ref = \$hash_ref; 
${$$tmp_ref}{a};