I noticed in node 310766 that you can pass different variables through to a sub.. all good and useful stuff.
But when I tried to pass a hash through by reference it only worked one way.
I assume its because I have defined a local hash to be equal to the referenced hash.. but I thought 'by ref' meant it would link directly to the original hash not use a copy of it.
How do you pass a hash (or anything) into a sub, work on it, and have the original effected?
Output:use strict; use Data::Dumper; my %bits; $bits{'zero'}='start element'; &loader('something',\%bits); print 'Result:'.Dumper(\%bits); sub loader{ # loads values into hash.. my $tail = shift; my %h_ref = %{+shift}; print 'In sub:'.Dumper(\%h_ref); $h_ref{'one'}='thing_'.$tail; $h_ref{'two'}='thong_'.$tail; print 'After add:'.Dumper(\%h_ref); }
Thanks,In sub:$VAR1 = { 'zero' => 'start element' }; After add:$VAR1 = { 'zero' => 'start element', 'two' => 'thong_something', 'one' => 'thing_something' }; Result:$VAR1 = { 'zero' => 'start element' };
___ /\__\ "What is the world coming to?" \/__/ www.wolispace.com
In reply to Passing hashes by reference by wolis
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |