11

我想推送对哈希的引用。我的意思是我想推送一个对新哈希的引用,它是我给定的哈希的浅拷贝。

如何创建浅拷贝?

4

1 回答 1

32

只需复制它:

 my %copy = %$hash;

如果你想要另一个引用,只需在匿名哈希构造函数中展开原始引用:

 my $copy = { %$hash };

对于那些想知道浅拷贝的人:这种分配只会为顶级键生成新值。任何引用的值在新哈希中仍然是相同的引用。也就是说,您可以在不更改原始哈希的情况下替换新哈希中的值。如果您只是更改值,例如将新项目推送到匿名数组值,则两个哈希都会获得更改,因为它们共享相同的引用。因此,浅拷贝通常不是您想要的。

于 2010-01-09T00:00:44.063 回答