NAME(LIST); # & is optional with parentheses. NAME LIST; # Parentheses optional if predeclared/imported. &NAME(LIST); # Circumvent prototypes. &NAME; # Makes current @_ visible to called subroutine. defined(&NAME); # & is needed. The same is valid for undef(&NAME) and any case when you are naming your sub &$subref(); # & is needed. But $subref->() can be used to avoid the & &{$subref}(); # & is needed. But $subref->() can be used to avoid the &