in reply to Re^3: Massive Perl Memory Leak
in thread Massive Perl Memory Leak

but it has to create a new hash anc copy the values. So that changing one hash doesn't affect the other.
Sort of. As we found out in other posts only the first dimension is truly copied. With a hash of hashes the sub hashes come over as references and both hashes refer to the same subhash references.

Replies are listed 'Best First'.
Re^5: Massive Perl Memory Leak
by Jenda (Abbot) on Jun 14, 2007 at 08:38 UTC

    Sure. The keys of the hash are strings, the values are scalars. And the values of the scalars are copied, even if the value is just a reference. It's the same as this:

    my $x = 999; my $r1 = \$x; my $r2 = $r1; print "\$r1=$r1\t\$r2=$r2\t\$\$r1=$$r1\t\$\$r2=$$r2\n"; $x = 111; print "\$r1=$r1\t\$r2=$r2\t\$\$r1=$$r1\t\$\$r2=$$r2\n"; ${$r1} = 555; print "\$r1=$r1\t\$r2=$r2\t\$\$r1=$$r1\t\$\$r2=$$r2\n"; ${$r1} = 777; print "\$r1=$r1\t\$r2=$r2\t\$\$r1=$$r1\t\$\$r2=$$r2\n";