如何将多级嵌套哈希(例如,%A)复制到另一个哈希(例如,%B)?我想确保新哈希不包含与原始哈希(%A)相同的引用(指针)。
如果我更改原始哈希 (%A) 中的任何内容,它不应该更改新哈希 (%B) 中的任何内容。
我想要一种通用的方式来做到这一点。我知道我可以通过为每个级别的键重新分配值来做到这一点(例如,%{ $b{kb} } = %a;)。
但是,应该有一个解决方案,无论密钥级别的数量如何(散列的散列的散列......散列的散列)
问题示例
use Data::Dumper;
my %a=(q=>{
q1=>1,
q2=>2,
},
w=>2);
my %b;
my %c;
%{ $b{kb} } = %a;
print "\%b=[".Data::Dumper::Dumper (%b)."] ";
%{ $c{kc} } = %a; # $b{kb} = \%a;
print "\n\%c=[".Data::Dumper::Dumper (%c)."] ";
# CHANGE THE VALUE OF KEY IN ORIGINAL HASH %a
$a{q}{q1} = 2; # $c{kc} = \%a;
print "\n\%b=[".Data::Dumper::Dumper (%b)."] ";
print "\n\%c=[".Data::Dumper::Dumper (%c)."] ";
感谢你的帮助