in reply to Argument Passing, preference or performance ?

(Forgot to login first, :-) Logically they are the same, and even the gracefulness are the same. However there is one situation, I would suggest to use @_ instead of shift, to provide the elegance. That's the time you pass named parms, for example:
sub func { %parms = @_; foreach (keys %parms) { print "parms[$_] = $parms{$_}\n"; } } func("a" => 1, "b" => 2, "c" => 3);
Well, you can use shift, but in this case, a little bit tasteless, is it?