Hello sbrothy, and welcome to the Monastery!
To expand on dave_the_m’s answer:
Step 4 of the Basic debugging checklist says: “Dump arrays, hashes and arbitrarily complex data structures.” Using the core Data::Dumper module to print out the contents of @array, we see that after the first push the array contains 4 elements, which Data::Dumper names $VAR1 to $VAR4:
$VAR1 = 'CLIENT_PATH'; $VAR2 = 'PATH: 0'; $VAR3 = 'CLIENT_NICK'; $VAR4 = 'NICK: 0';
That’s because push puts its argument(s) (following the destination array) into list context, and a hash in list context returns a list of the form (key-x, val-x, key-y, val-y, ...). But when a reference to the hash is pushed instead, the result of the first push is:
$VAR1 = { 'CLIENT_PATH' => 'PATH: 0', 'CLIENT_NICK' => 'NICK: 0' };
— which shows that only one element ($VAR1) has been pushed onto the array; and this time its referent retains its identity as a hash.
Some useful reading: perlreftut and perldsc.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: Accessing HASH pushed into @array ('strict refs' in use error)
by Athanasius
in thread Accessing HASH pushed into @array ('strict refs' in use error)
by sbrothy
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |