in reply to subroutine question

perlsub explains the semantics of the different calling syntaxes. One little-known difference is that &foo, with no parentheses, gives foo access to the current contents of @_:
#!/usr/local/bin/perl sub foo { $_[0] = 'b'; } @_ = 'a'; foo(); print "@_\n"; &foo; print "@_\n"; __END__ a b