Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^2: subroutine function

by tobyink (Canon)
on Oct 11, 2012 at 19:55 UTC ( [id://998525]=note: print w/replies, xml ) Need Help??


in reply to Re: subroutine function
in thread subroutine function

my $left=$_[0]; my $right=$_[1];

which is the same as

my $left = shift @_; my $right = shift @_;

It is not the same at all. The first version doesn't modify @_. The second one does modify it. The difference is often very important. (For example, if you're planning on using goto.)

use Test::More; use Data::Dumper; sub func1 { my $left=$_[0]; my $right=$_[1]; goto \&Data::Dumper::Dumper; } sub func2 { my $left = shift @_; my $right = shift @_; goto \&Data::Dumper::Dumper; } my @args = qw( a b ); # Are they the same?? is( func1(@args), func2(@args), "they're the same!", ); done_testing();
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^3: subroutine function
by runrig (Abbot) on Oct 11, 2012 at 20:43 UTC
    The difference is often very important.

    And the difference often doesn't matter at all. As in the OP's example. In which case they are essentially the same. Similar. Whatever. Yes, I know what the difference is; I often pass @_ to other methods after shifting off the object. And often I don't.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (4)
As of 2024-04-25 12:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found