Array argument @_does not behave as you think. The values in @_the subroutine are actually aliases for real arguments :
The @_ array is a local array, but its elements are aliases for real scalar parameters.
When you say this:
sub s {
"huh?" =~ /(.*)/;
print for @_;
}
"ok" =~ /(.*)/;
s("$1", $1);
$1 s , , , @_ $1 ( $1, ). s $1 . @_ "ok", $1, print .
:
sub s {
my @a = @_;
"huh?" =~ /(.*)/;
print for @a;
}
:
sub s {
local $1;
"huh?" =~ /(.*)/;
print for @_;
}
"ok", . (, -) , s . my @a = @_; @_, $1; local $1; $1 sub, @_, $1 :
, eval.
- @_ ( , ).
, , Perl, , .