Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

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

by erikharrison (Deacon)
on Jun 26, 2002 at 23:06 UTC ( #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?


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?

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (3)
As of 2023-03-27 20:31 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (65 votes). Check out past polls.