Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Perl::CriticPerl::CritUserPContributedlPerlpDocumentationhibitUnusedCapture(3)

NAME
       Perl::Critic::Policy::RegularExpressions::ProhibitUnusedCapture - Only
       use a capturing group if	you plan to use	the captured value.

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

DESCRIPTION
       Perl regular expressions	have multiple types of grouping	syntax.	 The
       basic parentheses (e.g. "m/(foo)/") captures into the magic variable
       $1.  Non-capturing groups (e.g. "m/(?:foo)/" are	useful because they
       have better runtime performance and do not copy strings to the magic
       global capture variables.

       It's also easier	on the maintenance programmer if you consistently use
       capturing vs. non-capturing groups, because that	programmer can tell
       more easily which regexps can be	refactored without breaking
       surrounding code	which may use the captured values.

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

CAVEATS
   "qr//" interpolation
       This policy can be confused by interpolation of "qr//" elements,	but
       those are always	false negatives.  For example:

	   my $foo_re =	qr/(foo)/;
	   my ($foo) = m/$foo_re (bar)/x;

       A human can tell	that this should be a violation	because	there are two
       captures	but only the first capture is used, not	the second.  The
       policy only notices that	there is one capture in	the regexp and remains
       happy.

   "@-", "@+", $LAST_MATCH_START and $LAST_MATCH_END
       This policy will	only recognize capture groups referred to by these
       variables if the	use is subscripted by a	literal	integer.

   $^N and $LAST_SUBMATCH_RESULT
       This policy will	not recognize capture groups referred to only by these
       variables, because there	is in general no way by	static analysis	to
       determine which capture group is	referred to.  For example,

	   m/ (?: (A[[:alpha:]]+) | (N\d+) ) (?{$foo=$^N}) /smx

       makes use of the	first capture group if it matches, or the second
       capture group if	the first does not match but the second	does.

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.24.1Perl::Critic::Policy::RegularExpressions::ProhibitUnusedCapture(3)

NAME | AFFILIATION | DESCRIPTION | CONFIGURATION | CAVEATS | CREDITS | AUTHOR | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Perl::Critic::Policy::RegularExpressions::ProhibitUnusedCapture&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help