С perlsub :
Для вызова подпрограмм:
NAME(LIST); # & is optional with parentheses.
NAME LIST; # Parentheses optional if predeclared/imported.
&NAME(LIST); # Circumvent prototypes.
&NAME; # Makes current @_ visible to called subroutine.
Обычно подпрограммы предварительно не декларируются на практике. Обычно это не проблема, поскольку люди обычно используют парены с сабвуферами, созданными программистами.
Perl :: Critic (Модуль, который поддерживает модель Perltopia Дэмиена Конвея, изложенную в Perl Best Practices), предлагает следующие способы обработки подпрограмм:
- Запретить амперсанд и сигилы.
- Запретить прототипы подпрограмм.
- Запретить паренов со встроенными модулями.
Одна из причин, по которой парены со встроенными модулями не используются, заключается в том, чтобы визуально отличать их от программно-определяемых функций, которые традиционно используют парены. Поскольку это необычно для предварительного объявления сабов и не рекомендуется использовать амперсанд (потому что он меняет способ обработки @_) или прототипы (потому что, ну, это длинная история), что оставляет очень сильный фон для использования паренов со сценариями. определенные подводные лодки.