---
name: "Perl::Critic::Policy::Subroutines::ProhibitNestedSubs"
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::Subroutines::ProhibitNestedSubs"
---

# Perl::Critic::Policy::Subroutines::ProhibitNestedSubs(3pm)

"sub never { sub correct {} }".

## NAME

Perl::Critic::Policy::Subroutines::ProhibitNestedSubs - "sub never { sub correct {} }".

## AFFILIATION

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

## DESCRIPTION

**Attention would-be clever Perl writers (including Younger RJBS):**

This does not do what you think:

```
  sub do_something {
      ...
      sub do_subprocess {
          ...
      }
      ...
  }
```

`do_subprocess()` is global, despite where it is declared.  Either write your subs without nesting or use anonymous code references.

## CONFIGURATION

This Policy is not configurable except for the standard options.

## NOTE

Originally part of Perl::Critic::Tics.

## AUTHOR

Ricardo SIGNES \<rjbs@cpan.org\>

## COPYRIGHT

Copyright (c) 2007-2011 Ricardo SIGNES.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
