[Boston.pm] something about @_ is different?
"Greg London" <email-2Ro/Dj86MvDSUeElwK9/[email protected]> Tue, 21 May 2019 14:04:11 -0400
| Newsgroups | gmane.comp.lang.perl.perl-mongers.boston |
|---|---|
| Message-ID | <[email protected]> |
Hm, it could be a caffeine defficiency, but it seems that @_ is
being treated different than other arrays.
I can create a normal array:
my @normal_array=('a','b');
and I can assign an entirely new list to it:
@normal_array=reverse(@normal_array); # assign to array
and I can assign to it in parenthesis an entirely new list
(@normal_array)=reverse(@normal_array); # assign to (array)
And those assignements take hold as I would expect.
When I use the exact same syntax for the @_ array instead
of @normal_array, it doesn't work as expected:
sub swapper{
(@_) = reverse(@_); # this doesn't seem to do anything.
}
my @other=('x','y');
swapper(@other);
print Dumper \@other;
Pretty sure this code used to work,
but that was many moons ago.
Thoughts?
Greg
Here's the script in one big copy/paste block:
my @normal_array=('a','b');
print "normal_array is "; print Dumper \@normal_array;
@normal_array=reverse(@normal_array); # assign to array
print "normal_array is "; print Dumper \@normal_array;
(@normal_array)=reverse(@normal_array); # assign to (array)
print "normal_array is "; print Dumper \@normal_array;
sub swapper{
(@_) = reverse(@_);
}
my $one = "i am one";
my $two = "i am two";
swapper($one,$two);
warn "one is '$one'";
warn "two is '$two'";