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

FreeBSD Manual Pages


home | help

       Perl::Critic::Policy::Variables::ProhibitPunctuationVars	- Write
       "$EVAL_ERROR" instead of	"$@".

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

       Perl's vocabulary of punctuation	variables such as $!, $., and $^ are
       perhaps the leading cause of its	reputation as inscrutable line noise.
       The simple alternative is to use	the English module to give them	clear

	 $| = undef;			  #not ok

	 use English qw(-no_match_vars);
	 local $OUTPUT_AUTOFLUSH = undef; #ok

       The scratch variables $_	and @_ are very	common and are pretty well
       understood, so they are exempt from this	policy.	 The same goes for the
       less-frequently-used default filehandle "_" used	by stat().  All	the
       regexp capture variables	($1, $2, ...) are exempt too.  $] is exempt
       because there is	no English equivalent and Module::CoreList is based
       upon it.

       You can add more	exceptions to your configuration.  In your
       perlcriticrc file, add a	block like this:

	 allow = $@ $!

       The "allow" property  should  be	 a  whitespace-delimited  list	of
       punctuation variables.

       Other configuration options  control  the  parsing  of  interpolated
       strings in the search for forbidden variables. They have	 no  effect on
       detecting punctuation variables outside of interpolated	strings.

	 string_mode = thorough

       The option "string_mode"	 controls  whether  and	 how  interpolated
       strings are searched for	punctuation variables. Setting "string_mode =
       thorough", the default,	checks	for  special  cases that may look like
       punctuation variables  but  aren't,  for	 example $#foo,	an array index
       count; $$bar, a scalar  dereference;  or	$::baz,	a global symbol.

       Setting "string_mode = disable" causes all interpolated strings	to be
       ignored entirely.

       Setting "string_mode = simple" uses a simple regular expression	to
       find matches. In	this mode, the magic variables $$, "$'",  $# and $:
       are ignored within interpolated strings due  to	the  high risk of
       false positives.	Simple mode is	retained  from	an  earlier draft of
       the interpolated- strings code. Its use is only recommended as a
       workaround if bugs appear in thorough mode.

       The  "string_mode"  option  will	 go  away  when	 the  parsing	of
       interpolated strings is implemented in PPI. See	"CAVEATS"  below.

       Punctuation variables that confuse PPI's	document parsing may not be
       detected	 correctly  or	at  all,  and  may  prevent  detection	 of
       subsequent ones.	In particular, $" is known to cause difficulties in
       interpolated strings.

       ProhibitPunctuationVars	relies	 exclusively   on   PPI	  to   find
       punctuation variables in	code, but does all the parsing	itself	for
       interpolated strings. When, at some  point,  this  functionality	 is
       transferred to PPI, ProhibitPunctuationVars  will  cease	 doing	the
       interpolating  and  the	"string_mode"	option	 will	go   away.

       Jeffrey Ryan Thalhammer <>

       Copyright (c) 2005-2011 Imaginative Software Systems.  All rights

       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.1	   Perl::Critic::Policy::Variables::ProhibitPunctuationVars(3)


Want to link to this manual page? Use this URL:

home | help