in reply to To & or not to & ?

I would say that if you have a module explicitly calling functions in the main package, your module is not modular at all! If the "global" function is needed everywhere, it should be in a separate module, importable by the other modules. Or if a module needs another package (let's say the main package) to provide it with a function, perhaps it would be cleaner if main sent a reference instead:

package main; Bar::bar(\&foo); sub foo { # do stuff } package Bar; sub bar { # need to call a subroutine provided by the caller my $subref = shift; $subref->(); }

The only uses I have had for &sub are to generate subroutine references and to override subroutine prototypes.