|
|
| laziness, impatience, and hubris | |
| PerlMonks |
Re: Re: Perl Internals: Hashesby kelan (Deacon) |
| on Apr 15, 2004 at 21:09 UTC ( #345549=note: print w/ replies, xml ) | Need Help?? |
|
To expound on demerphq's response with an example: Given a hash, like so: When you call a subroutine with an array or hash, it gets flattened into a list. For a hash, that means giving all of its keys and corresponding values. So this: is the same as this: (Note that when hashes are flattened, the keys may come out in any order, so it could have also been something(b, 2, a, 1);.) The other side of this situation is that you can fill a hash directly with a list, instead of doing each key one-at-a-time. When you assign to a hash with a list, each odd item becomes a key, and the corresponding even item is its value. So we could have filled the hash like this: and it would be exactly the same. Note that this is also the same as the more familiar: as the => is just a type of comma that auto-quotes its left side operand. Now you can see what happens: And inside the sub: And so it turns out that you're just doing a basic copy. The hash inside the sub will be a copy of the one you passed in.
In Section
Seekers of Perl Wisdom
|
|
||||||||||||||||||||