Hi masood91, welcome to the monastery.
You're free to use whichever form you like to process arguments. There may be efficiency gains one way or the other, but usually that isn't overly important. More often, it just is more clear in the shift form.
You should be careful though, because your suggestion of using "my $a=@_" wont actually work as you hope. Instead $a will be set to the number of values contained in @_. What you'd want instead is:
my ($a) = @_; # force list context in the assignmentor
my $a = $_[0]; # set $a to the first parameter passedHere's an example where you might prefer to use shift:
abc('hello', 3271, 33, 44); sub abc{ my $a = shift; print "$a $_\n" for (@_) }
In reply to Re: difficulty in understanding use of @_ and shift in a subroutine
by Loops
in thread difficulty in understanding use of @_ and shift in a subroutine
by masood91
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |