http://qs1969.pair.com?node_id=177582


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