perl哈希引用的参考

时间:2011-10-13 05:56:39

标签: perl reference

my $hash_ref = { a => 1, b => 2 };
my $tmp_ref = $hash_ref;

代码如上所述,我想更改哈希值并插入一些新对。我的问题如下:

  1. 我如何通过$tmp_ref
  2. 实现这些目标
  3. 是否可以通过引用的引用进行更改或插入?
  4. 引用的引用,引用和具体数据结构(这里是哈希)是否一致?
  5. 非常感谢!

2 个答案:

答案 0 :(得分: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};

答案 1 :(得分:2)

$hash_ref$tmp_ref都会引用相同的哈希,因此您可以使用以下内容向$hash_ref添加内容:

$tmp_ref->{c} = 3;

然后$hash_ref$tmp_ref 都会引用相同的(a => 1, b => 2, c => 3)哈希值。

引用是Perl的指针版本。