Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re^3: Wrong content of variable passed to sub

by afoken (Abbot)
on Aug 24, 2013 at 07:53 UTC ( #1050786=note: print w/replies, xml ) Need Help??

in reply to Re^2: Wrong content of variable passed to sub
in thread Wrong content of variable passed to sub

I thought that @_ meant the list passed to the sub, so I used $_ when I passed a single element.

@_ contains the list of arguments for a sub, but you want the first argument of that array, which is $_[0]. $_ is something completely different, as you already know.

There are two common idioms for accessing arguments:

sub foo { my $onlyarg=shift; # @_ is the default argument for shift # more code }


sub bar { my ($huey,$dewey,$louie)=@_; # more code }

Of course, you can also write

sub baz { my $onlyarg=$_[0]; # more code }


sub moo { my $huey=shift; my $dewey=shift; my $louie=shift; # more code }

or even

sub ohnononononopleaseno { my $huey=$_[0]; my $dewey=$_[1]; my $louie=$_[2]; # more code }

But that is uncommon and has some strange accent. Stick with the first two variants. Having only one argument needs no exception, you can use the list assignment even for a single argument, no need for shift:

sub foo2 { my ($onlyarg)=@_; # more code }

Just remember the parentheses, or else $onlyarg will contain the number of arguments, in this case 1. Not what you want.


Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1050786]
[LanX]: met a guy from Aberdeen durin holidays, liked Scotsish accent a lot ... very phonetic
[LanX]: ... understood everything after mentally write down what he said.
[choroba]: Trainspotting?
[choroba]: Ouch, trailing commas in JSON :-(
[LanX]: ... though there seems to exist a taxation for the letter 't' in Northern Bri''ain ;-)
[LanX]: never seen trainspotting in OV ... :(
[karlgoethebier]: LanX
[LanX]: They should teach Scottish in continental schools after Brexit !!!

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (8)
As of 2018-02-19 10:42 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (261 votes). Check out past polls.