Perl::Critic::Policy::Community::AmpersandSubCalls(3pm)

Perl::Critic::Policy::Community::AmpersandSubCalls3pm

Don't use & to call subroutines

Overview

Ampersands ("&") were once needed to call subroutines, but in modern Perl they are not only unnecessary but actually change the behavior from what you may expect. Calling a subroutine with an ampersand ignores the subroutine's prototype if any, which may change what arguments the subroutine receives. Additionally, calling a subroutine as "&foo;" with no arguments will pass on the contents of @_ from the current subroutine, which may be quite surprising. Unless used intentionally for this behavior, the ampersand should simply be omitted.

  my $value = &foo();  # not ok
  my $sum = &foo(1,2); # not ok
  my $value = foo();   # ok
  my $sum = foo 1,2;   # ok

This policy is a subclass of the core policy Perl::Critic::Policy::Subroutines::ProhibitAmpersandSigils, and performs the same function but in the "community" theme.

Affiliation

This policy is part of Perl::Critic::Community.

Configuration

This policy is not configurable except for the standard options.

Releases

2 releases since Debian 12 (Bookworm); the text changed 1 time.

  1. 12
  2. 13

Author

Dan Book, "[email protected]"

From libperl-critic-community-perl 1.0.4-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.