Implied Arguments in perl

When calling a subroutine with the “&” sigil prefix and no parenthesis, the current @_ array gets implicitely passed to the subroutine being called. This can cause subtly odd behaviour if you are not expecting it.
#
#
#

sub second_level {
print Dumper @_;
}
sub first_level {
# using '&' sigil and no parens.
# doesn't look like I'm passing any params
# but perl will pass @_ implicitely.
&second_level;
}
first_level(1,2,3);

> $VAR1 = [

> 1,
> 2,
> 3
> ];

Add Comment

Required fields are marked *. Your email address will not be published.