#!/usr/bin/perl
sub t {
print \"in t\\n\";
print \"@_\\n\";
&s;
}
sub s {
print \"in s\\n\";
print \"@_\\n\";
}
t(1,2);
print \"out\\n\";
print \"@_\\n\
When using &
before the sub name and no argument list is passed, the current @_
is passed as argument instead. So, it is a feature.
Here are the different ways to call a subroutine:
NAME(LIST); # & is optional with parentheses.
NAME LIST; # Parentheses optional if predeclared/imported.
&NAME(LIST); # Circumvent prototypes.
&NAME; # Makes current @_ visible to called subroutine.
from perldoc perlsub