in reply to hash question
As an example of what BrowserUk and GrandFather are talking about, print the addresses of the hash references you're passing around:
Note that the address of the $hash reference variable in the subroutine changes between point Sa and point Sb when you assign another anonymous hash reference to it, but the $hash reference variable in the "main" part of the code never changes its address (or its contents).c:\@Work\Perl\monks>perl -wMstrict -MData::Dumper -le "my $hash = {}; print 'Ma: ', $hash; ;; do_something($hash); ;; print 'Mb: ', $hash; print Dumper($hash); ;; sub do_something { my $hash = shift; print 'Sa: ', $hash; ;; $hash = { a => 'alpha', b => 'beta', }; print 'Sb: ', $hash; print Dumper( $hash ); } " Ma: HASH(0x9cd06c) Sa: HASH(0x9cd06c) Sb: HASH(0x9cd16c) $VAR1 = { 'a' => 'alpha', 'b' => 'beta' }; Mb: HASH(0x9cd06c) $VAR1 = {};
Replace the
$hash = { a => 'alpha', b => 'beta', };
statement in the subroutine with
$hash->{a} = 'alpha';
$hash->{b} = 'beta';
statements that assign by reference to the referent and see what happens to all the hash reference addresses: they never change.
Give a man a fish: <%-{-{-{-<
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: hash question
by duyet (Friar) on May 27, 2016 at 05:55 UTC | |
by andal (Hermit) on May 27, 2016 at 07:44 UTC | |
by soonix (Chancellor) on May 27, 2016 at 07:00 UTC | |
by AnomalousMonk (Archbishop) on May 27, 2016 at 16:12 UTC |