my $hash_ref = { a => 1, b => 2 };
my $tmp_ref = $hash_ref;
代码如上,我想更改哈希值并插入一些新的对。我的问题如下:perl哈希引用的参考
- 我怎样才能通过
$tmp_ref
- 实现这些是有可能改变或插入引用的参考?
- 它是参考的参考,参考和具体的数据结构(这里是散列)一致吗?
非常感谢!
my $hash_ref = { a => 1, b => 2 };
my $tmp_ref = $hash_ref;
代码如上,我想更改哈希值并插入一些新的对。我的问题如下:perl哈希引用的参考
$tmp_ref
非常感谢!
两个$hash_ref
和$tmp_ref
将把相同的哈希所以你可以添加一些$hash_ref
:
$tmp_ref->{c} = 3;
然后,两个$hash_ref
和$tmp_ref
将点指同一(a => 1, b => 2, c => 3)
哈希值。
引用是Perl的指针版本。
在这种情况下,$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};
你可以得到一个参考的参考,但我认为你不需要。直接引用就足够了。但是可能有用的是嵌套的数据结构,例如其哈希值是对内部哈希引数的引用的哈希引用 – stevenl