Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: pass Array/Hash reference to a module method?

by erikharrison (Deacon)
on Jun 26, 2002 at 23:06 UTC ( [id://177582]=note: print w/replies, xml ) Need Help??


in reply to pass Array/Hash reference to a module method?

In this kind of situation, your probably best to just try it out. :-). However, that it works and WHY it works is really neat (IMHO) so here is an explanation.

The reason that we can have named argument passing of the kind that we're talking about here is because of how Perl passes args to it's subs. Perl flattens the argument list into one big long list, by expanding all arrays into one list. It does the same for hashes to (in fact, we used to call 'em associative arrays, because they're just arrays with funny indeces). The => operator is really just a fancy comma (it has some very minor magic which simply makes it DWIM in a very subtle way). The sub can assign this array of passed args to a hash (just as you can assign any list to a hash) the even elements becoming keys the odd ones becoming values. So, you pass in a hash the hash gets turned into a flat list, the list gets assigned to a hash again. Neat, eh?

Cheers,
Erik

Light a man a fire, he's warm for a day. Catch a man on fire, and he's warm for the rest of his life. - Terry Pratchet

  • Comment on Re: pass Array/Hash reference to a module method?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://177582]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (5)
As of 2024-04-20 11:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found