Not quite, using the ampersand causes the routine call to
use the existing @_ as the default arguments. If you provide arguments they are used instead.
sub z {
my $i =1;
foreach (@_) {
print "$i : $_\n";
$i++;
}
}
sub x {
&z; # 1
&z( "good", "bye");
&z; # same as one again
&z(); # called with empty list
}
x( "say", "hello");