Perl::Critic::Policy::ControlStructures::ProhibitCascadingIfElse(3pm)

Perl::Critic::Policy::ControlStructures::ProhibitCascadingIfElse3pm

Don't write long "if-elsif-elsif-elsif-elsif...else" chains.

Affiliation

This Policy is part of the core Perl::Critic distribution.

Overview

Long "if-elsif" chains are hard to digest, especially if they are longer than a single page or screen. If testing for equality, use a hash lookup instead.

    if ($condition1) {         #ok
        $foo = 1;
    }
    elsif ($condition2) {      #ok
        $foo = 2;
    }
    elsif ($condition3) {      #ok
        $foo = 3;
    }
    elsif ($condition4) {      #too many!
        $foo = 4;
    }
    else {                     #ok
        $foo = $default;
    }

Configuration

This policy can be configured with a maximum number of "elsif" alternatives to allow. The default is 2. This can be specified via a "max_elsif" item in the .perlcriticrc file:

    [ControlStructures::ProhibitCascadingIfElse]
    max_elsif = 3

Releases

10 releases since Debian 5.0 (Lenny); the text changed 9 times.

  1. 5.0
  2. 6.0
  3. 7
  4. 8
  5. 9
  6. 10
  7. 11
  8. 12
  9. 13
  10. Arch

Author

Jeffrey Ryan Thalhammer <[email protected]>

From perl-perl-critic 1.156-3 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.