---
name: "Perl::Critic::Policy::ControlStructures::ProhibitUnreachableCode"
section: "3pm"
platform: "linux"
package: "perl-perl-critic"
version: "1.156-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Perl::Critic::Policy::ControlStructures::ProhibitUnreachableCode"
---

# Perl::Critic::Policy::ControlStructures::ProhibitUnreachableCode(3pm)

Don't write code after an unconditional "die, exit, or next".

## NAME

Perl::Critic::Policy::ControlStructures::ProhibitUnreachableCode - Don't write code after an unconditional "die, exit, or next".

## AFFILIATION

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

## DESCRIPTION

This policy prohibits code following a statement which unconditionally alters the program flow.  This includes calls to `"exit"`, `"die"`, `"return"`, `"next"`, `"last"` and `"goto"`.  Due to common usage, `"croak"` and `"confess"` from Carp are also included.

Code is reachable if any of the following conditions are true:

- •

  Flow-altering statement has a conditional attached to it

- •

  Statement is on the right side of an operator `"&&"`, `"||"`, `"//"`, `"and"`, `"or"`, or `"err"`.

- •

  Code is prefixed with a label (can potentially be reached via `"goto"`)

- •

  Code is a subroutine

## EXAMPLES

```
  # not ok
  exit;
  print "123\n";
  # ok
  exit if !$xyz;
  print "123\n";
  # not ok
  for ( 1 .. 10 ) {
      next;
      print 1;
  }
  # ok
  for ( 1 .. 10 ) {
      next if $_ == 5;
      print 1;
  }
  # not ok
  sub foo {
      my $bar = shift;
      return;
      print 1;
  }
  # ok
  sub foo {
      my $bar = shift;
      return if $bar->baz();
      print 1;
  }
  # not ok
  die;
  print "123\n";
  # ok
  die;
  LABEL: print "123\n";
  # not ok
  croak;
  do_something();
  # ok
  croak;
  sub do_something {}
```

## CONFIGURATION

This Policy is not configurable except for the standard options.

## SEE ALSO

Perl::Critic::Policy::ControlStructures::ProhibitPostfixControls

## AUTHOR

Peter Guzis \<pguzis@cpan.org\>

## COPYRIGHT

Copyright (c) 2006-2011 Peter Guzis.  All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.  The full text of this license can be found in the LICENSE file included with this module.
