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

Re: Re: passing subroutine arguments directly into a hash

by George_Sherston (Vicar)
on Oct 20, 2001 at 15:32 UTC ( #120235=note: print w/replies, xml ) Need Help??


in reply to Re: passing subroutine arguments directly into a hash
in thread passing subroutine arguments directly into a hash

Hah! I finally understood something! Probably something I shd have understood a while ago... namely that a hash in array context is an array. So When I do
@list = qw (one two three); %args = ( arg1 => 'string', arg2 => 5, arg3 => \@list ); sub1(%args); sub sub1 { print "$_\n" for @_; }
I get
arg1 string arg2 5 arg3 ARRAY(0x17656b4)
Obvious when you think about it. I mention it here more to fix it in my own mind than in the faint hope of enlightening others, who are probably way ahead of me. But it does make sense for me of a lot of stuff I've been doing on trust, not 100% knowing why it works... like this way of passing arguments to HTML::Template.

George Sherston

Replies are listed 'Best First'.
Re: Re: Re: passing subroutine arguments directly into a hash
by blakem (Monsignor) on Oct 20, 2001 at 16:01 UTC
    (well, technically its a list.... but thats for another day)

    Another "a-ha!" moment is just one more step away. The '=>' operator is really just a glorified comma. It will quote simple barewords on the LHS, but thats the only difference. Consider the following:

    my @a = (1 => 2 => 3 => 4); print "$_\n" for @a;
    So, the somewhat unfamiliar:
    (arg1=>$blah, arg2=>$blah2)
    is really just a very familiar four element list:
    ( 'arg1' , $blah , 'arg2' , $blah2 )
    dressed up with some syntactic sugar. (note the need to quote 'barewords' when using commas)

    With this in mind, take another look at your hash assignment and named argument passing.....

    -Blake

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (2)
As of 2022-05-21 10:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (76 votes). Check out past polls.

    Notices?