Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

perl::critic::policy::regularexpressions::prohibitfixedstringmat(3pm) [debian man page]

Perl::Critic::Policy::RegularExpressions::ProhibitFixedSUsergContributed)Perl::Critic::Policy::RegularExpressions::ProhibitFixedStringMatches(3pm)

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.14.2 2012-Perl::Critic::Policy::RegularExpressions::ProhibitFixedStringMatches(3pm)

Check Out this Related Man Page

Perl::Critic::Policy::RegularExpressions::ProhibitCapturUserhContributed PePerl::Critic::Policy::RegularExpressions::ProhibitCaptureWithoutTest(3)

NAME
Perl::Critic::Policy::RegularExpressions::ProhibitCaptureWithoutTest - Capture variable used outside conditional. AFFILIATION
This Policy is part of the core Perl::Critic distribution. DESCRIPTION
If a regexp match fails, then any capture variables ($1, $2, ...) will be undefined. Therefore it's important to check the return value of a match before using those variables. This policy checks that the previous regexp for which the capture variable is in-scope is either in a conditional or causes an exception or other control transfer (i.e. "next", "last", "redo", "return", or sometimes "goto") if the match fails. A "goto" is only accepted by this policy if it is a co-routine call (i.e. "goto &foo") or a "goto LABEL" where the label does not fall between the "goto" and the capture variable in the scope of the "goto". A computed "goto" (i.e. something like "goto (qw{foo bar baz})[$i]") is not accepted by this policy because its target can not be statically determined. This policy does not check whether that conditional is actually testing a regexp result, nor does it check whether a regexp actually has a capture in it. Those checks are too hard. This policy also does not check arbitrarily complex conditionals guarding regexp results, for pretty much the same reason. Simple things like m/(foo)/ or die "No foo!"; die "No foo!" unless m/(foo)/; will be handled, but something like m/(foo) or do { ... lots of complicated calculations here ... die "No foo!"; }; are beyond its scope. CONFIGURATION
By default, this policy considers "die", "croak", and "confess" to throw exceptions. If you have additional subroutines or methods that may be used in lieu of one of these, you can configure them in your perlcriticrc as follows: [RegularExpressions::ProhibitCaptureWithoutTest] exception_source = my_exception_generator BUGS
This policy does not recognize named capture variables. Yet. AUTHOR
Chris Dolan <cdolan@cpan.org> COPYRIGHT
Copyright (c) 2006-2011 Chris Dolan. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.16.3 2014-06Perl::Critic::Policy::RegularExpressions::ProhibitCaptureWithoutTest(3)
Man Page