Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidGrep(3pm)

Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidGrep3pm

Don't use "grep" in void contexts.

Affiliation

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

Overview

"map" and "grep" are intended to be pure functions, not mutators. If you want to iterate with side-effects, then you should use a proper "for" or "foreach" loop.

    grep{ print frobulate($_) } @list;           #not ok
    print map{ frobulate($_) } @list;            #ok
    grep{ $_ = lc $_ } @list;                    #not ok
    for( @list ){ $_ = lc $_  };                 #ok
    map{ push @frobbed, frobulate($_) } @list;   #not ok
    @frobbed = map { frobulate($_) } @list;      #ok

Configuration

This Policy is not configurable except for the standard options.

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.