Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re^2: subroutine function

by tobyink (Abbot)
on Oct 11, 2012 at 19:55 UTC ( #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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://998525]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2018-02-25 22:33 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (315 votes). Check out past polls.