Unix/Linux Go Back    


CentOS 7.0 - man page for perl::critic::policy::regularexpressions::prohibitfixedstringmatches (centos section 3)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


Perl::Critic::Policy::ReguPerl::Critic::Policy::RegularExpressions::ProhibitFixedStringMatches(3)

NAME
       Perl::Critic::Policy::RegularExpressions::ProhibitFixedStringMatches - Use "eq" or hash
       instead of fixed-pattern regexps.

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

DESCRIPTION
       A regular expression that matches just a fixed set of constant strings is wasteful of
       performance and is hard on maintainers.	It is much more readable and often faster to use
       "eq" or a hash to match such strings.

	   # Bad
	   my $is_file_function = $token =~ m/\A (?: open | close | read ) \z/xms;

	   # Faster and more readable
	   my $is_file_function = $token eq 'open' ||
				  $token eq 'close' ||
				  $token eq 'read';

       For larger numbers of strings, a hash is superior:

	   # Bad
	   my $is_perl_keyword =
	       $token =~ m/\A (?: chomp | chop | chr | crypt | hex | index
				  lc | lcfirst | length | oct | ord | ... ) \z/xms;

	   # Better
	   Readonly::Hash my %PERL_KEYWORDS => map {$_ => 1} qw(
	       chomp chop chr crypt hex index lc lcfirst length oct ord ...
	   );
	   my $is_perl_keyword = $PERL_KEYWORD{$token};

       Conway also suggests using "lc()" instead of a case-insensitive match.

   VARIANTS
       This policy detects both grouped and non-grouped strings.  The grouping may or may not be
       capturing.  The grouped body may or may not be alternating.  "\A" and "\z" are always
       considered anchoring which "^" and "$" are considered anchoring is the "m" regexp option
       is not in use.  Thus, all of these are violations:

	   m/^foo$/;
	   m/\A foo \z/x;
	   m/\A foo \z/xm;
	   m/\A(foo)\z/;
	   m/\A(?:foo)\z/;
	   m/\A(foo|bar)\z/;
	   m/\A(?:foo|bar)\z/;

       Furthermore, this policy detects violations in "m//", "s///" and "qr//" constructs, as you
       would expect.

CONFIGURATION
       This Policy is not configurable except for the standard options.

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

AUTHOR
       Chris Dolan <cdolan@cpan.org>

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.16.3		  Perl::Critic::Policy::RegularExpressions::ProhibitFixedStringMatches(3)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 07:41 AM.