I thought deep copy of hash of hash would work, but when I modify the originla
hash %x, the deep copy %y is modified too.
What do i did wrong ?
my %x= ('miller'=> {'lastname' => 'michael','tel'=>'222'},
'duran' => {'lastname'=> 'peggy', 'tel' => '333'},
);
print "--Original hash \n";
for my $nom (keys %x) {
print "nom: ", $nom, " ";
for my $val (keys %{$x{$nom}} ) {
print $val, ": ", $x{$nom}{$val}, " ";
}
print"\n";
}
my $y= {%x}; #anonymous hash ref containg data freom %x
#
#modifying $x shouldn't affects $y ??
#
$x{'duran'}{'tel'}='888';
print "--Deep copy of Original hash \n";
#notice how to dereference $y !!
for my $nom (keys (%$y)) {
print "nom: ", $nom, " ";
for my $val (keys %{@$y{$nom}}) {
print $val, ": ", $y->{$nom}{$val}, " ";
}
print "\n";
}
</h3>
And the code prints this (unexpected) :
--Original hash
nom: miller lastname: michael tel: 222
nom: duran tel: 333 lastname: peggy
--Deep copy of Original hash
nom: duran tel: 888 lastname: peggy
nom: miller lastname: michael tel: 222