manpagez: man pages & more
man Perl::Critic::Policy::BuiltinFunctions::ProhibitBooleanGrep(3)
Home | html | info | man
Perl::Critic::Policy::BuiltinFunctions::ProhibitBooleanGrep(3)



NAME

       Perl::Critic::Policy::BuiltinFunctions::ProhibitBooleanGrep - Use
       "List::MoreUtils::any" instead of "grep" in boolean context.


AFFILIATION

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


DESCRIPTION

       Using "grep" in boolean context is a common idiom for checking if any
       elements in a list match a condition.  This works because boolean
       context is a subset of scalar context, and grep returns the number of
       matches in scalar context.  A non-zero number of matches means a match.

       But consider the case of a long array where the first element is a
       match.  Boolean "grep" still checks all of the rest of the elements
       needlessly.  Instead, a better solution is to use the "any" function
       from List::MoreUtils, which short-circuits after the first successful
       match to save time.


CONFIGURATION

       This Policy is not configurable except for the standard options.


CAVEATS

       The algorithm for detecting boolean context takes a LOT of shortcuts.
       There are lots of known false negatives.  But, I was conservative in
       writing this, so I hope there are no false positives.


AUTHOR

       Chris Dolan <cdolan@cpan.org>


CREDITS

       Initial development of this policy was supported by a grant from the
       Perl Foundation.


COPYRIGHT

       Copyright (c) 2007-2011 Chris Dolan.  Many 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.




perl v5.28.2    Perl::Critic::Policy::BuiltinFunctions::ProhibitBooleanGrep(3)

perl-critic 1.134.0 - Generated Sun Jun 2 13:26:52 CDT 2019
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.