Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Re: Perl Internals: Hashes

by kelan (Deacon)
on Apr 15, 2004 at 21:09 UTC ( #345549=note: print w/replies, xml ) Need Help??

in reply to Re: Perl Internals: Hashes
in thread Perl Internals: Hashes

To expound on demerphq's response with an example:

Given a hash, like so:

my %test; $test{a} = 1; $test{b} = 2;
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:
something(a, 1, b, 2);
(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:

%test = (a, 1, b, 2);
and it would be exactly the same. Note that this is also the same as the more familiar:
%test = (a => 1, b => 2);
as the => is just a type of comma that auto-quotes its left side operand. Now you can see what happens:
something(%test); # is like something(a, 1, b, 2);
And inside the sub:
my %hash = @_; # is like %hash = (a, 1, b, 2);
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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://345549]
[erix]: choroba I believe you ;)
[1nickt]: Corion I assume you are talking about Retry? Attempt doesn;t offer callbacks and has a much simpler interface. (Also written by someone I trust...)
[perldigious]: I train for long portaging/rowing trips by carrying my kayak to the river about a half mile from my house 2-3 times a week depending on weather... but due to a lingering winter, I haven't had long to train this year.

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (10)
As of 2017-05-24 12:58 GMT
Find Nodes?
    Voting Booth?