2011-10-13 95 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};