可能是重复问题:
在Perl中制作数据结构的深拷贝的最佳方法是什么?
我好像没有理解Perl中哈希引用的工作原理,现在想要纠正这一点。
我需要获取一个哈希引用的副本,以便在不修改原始哈希引用的情况下进行操作。根据我的研究,复制哈希引用只需使用等号运算符即可:
my $hashref_copy = $hashref;
但据我所知,这只是将$hashref_copy
作为原始对象的一个指针。考虑下面这个玩具代码:
my $hashref = {data => "fish"};
my $hashref_copy = $hashref;
$hashref_copy->{data} = "chips";
print "$hashref->{data}\n";
如果$hashref_copy
是一个真正的独立副本,我期望这段代码会打印“fish”,但实际上它打印出来的是“chips”。
所以,要么1)我有什么误解,要么2)Perl存在问题。尽管我的自尊心让我相信是第二种情况,但我相当确定不是这样。我哪里错了?我需要做什么才能使对
$hashref_copy
的修改不会影响到原始的$hashref
?