http://www.perlmonks.org?node_id=545741


in reply to Re^3: while loop
in thread while loop

Well, perldoc perlsub explains it all. In brief, do not use the &-form unless you know what you're doing, i.e. either circumvent prototypes, if you're giving an explicit arg list or make current @_ visible to the sub, as you say.

Replies are listed 'Best First'.
Re^5: while loop
by gellyfish (Monsignor) on Apr 26, 2006 at 10:28 UTC

    ... or when dereferencing a CODEREF or a symbolic reference to a subroutine name, or taking a reference to a subroutine, or when using the subroutine as an argument to goto ...

    /J\

      Indeed! And well done to point out - although we were talking about sub calls. However when dereferencing I'd recommend using (again: unless one knows what she's doing and has good reasons to!)

      $subref->(@args);

      This is not merely cosmetic: I actually met a situation in which a module using &$subref(@args) caused a bad interaction with some subs.