Thanks, I took you're suggestion and put the prints into the program and ran it only once and printed the \hash and 3 \keys data. The output is below. 'B:' is for before the replicate/copy and 'A:' is after. As you can see, it looks like the data has been copied to a different location. I have no idea why 'B:' says 'REF' and A: says 'SCALAR', since they are the exact same print statement only adding the T to Account to show the two different hashes.
print "\nB:Acct: ",\%Account,"\t",\$Account{"0"},"\t",\$Account{"1" +},"\t",\$Account{"10"},"\n"; { my %TAccount = (); keys( %TAccount ) = $i; foreach my $key ( keys %{ $Account{$i} } ) { $TAccount{$key} = $Account{$i}{$key}; } print "A:TAcct1: ",\%TAccount,"\t",\$TAccount{"0"},"\t",\$TAccount{"1 +"},"\t",\$TAccount{"10"},"\n"; print "\nB:Acct: ",\%Account,"\t",\$Account{"0"},"\t",\$Account{"1" +},"\t",\$Account{"10"},"\n"; { my %TAccount = %{ $Account{"$i"} }; print "A:TAcct2: ",\%TAccount,"\t",\$TAccount{"0"},"\t",\$TAccount{"1 +"},"\t",\$TAccount{"10"},"\n";
B:Acct: HASH(0x300c0120) REF(0x300e72d8) REF(0x3002fd8c) REF(0x300f4c00) A:TAcct1: HASH(0x300e70a4) SCALAR(0x301413b0) SCALAR(0x30141284) SCALAR(0x30141344) B:Acct: HASH(0x300c0120) REF(0x300e72d8) REF(0x3002fd8c) REF(0x300f4c00) A:TAcct2: HASH(0x300e7260) SCALAR(0x30141974) SCALAR(0x30141848) SCALAR(0x30141908)
Thank you
"Well done is better than well said." - Benjamin Franklin
In reply to Re^2: How best to replicate/copy a hash of hashes
by flexvault
in thread How best to replicate/copy a hash of hashes
by flexvault
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |