Don*_*Don 11 perl hash shallow-copy
我想推送一个哈希的引用.我的意思是我想推送一个新哈希的引用,这是我给出的哈希的浅层副本.
如何创建浅拷贝?
bri*_*foy 31
只需复制它:
my %copy = %$hash;
Run Code Online (Sandbox Code Playgroud)
如果您想要另一个引用,只需在匿名哈希构造函数中展开原始引用:
my $copy = { %$hash };
Run Code Online (Sandbox Code Playgroud)
对于那些对浅拷贝感到疑惑的人:这种分配只为顶级键创建新值.任何引用的值仍将是新哈希中的相同引用.也就是说,您可以在不更改原始哈希的情况下替换新哈希中的值.如果仅更改值,例如将新项目推送到匿名数组值,则两个哈希值都会获得更改,因为它们共享相同的引用.因此,浅拷贝通常不是你想要的.