From perlsub :
To call routines:
NAME(LIST); # & is optional with parentheses. NAME LIST; # Parentheses optional if predeclared/imported. &NAME(LIST); # Circumvent prototypes. &NAME; # Makes current @_ visible to called subroutine.
Usually submarines are not declared in practice. This is usually not a problem, as people are usually used to using parsers with subs created by the programmer.
Perl :: Critic (A module that supports Damien Conway's Perltopia model, as outlined in Perl Best Practices) offers the following treatments for subtitles:
- Ban ampersands and sigils.
- Prohibit prototype routines.
- Disable parsers with built-in modules.
One of the reasons for not using partners with built-in modules is to make them visually different from the software functions that parsers traditionally use. Since this is unusual for pre-sale subnets, and it is not recommended to use an ampersand (because it changes the way @_ is processed) or prototypes (because, well, it's a long story), this leaves a very strong background for using partners with script -defined subs.
source share