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

FreeBSD Manual Pages

  
 
  

home | help
Perl::CritiPerl::CritiUseroContributedbPerl:DocumentationzedPunctuationVars(3)

NAME
       Perl::Critic::Policy::Variables::RequireLocalizedPunctuationVars	-
       Magic variables should be assigned as "local".

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

DESCRIPTION
       Punctuation variables (and their	English.pm equivalents)	are global
       variables.  Messing with	globals	is dangerous in	a complex program as
       it can lead to very subtle and hard to fix bugs.	 If you	must change a
       magic variable in a non-trivial program,	do it in a local scope.

       For example, to slurp a filehandle into a scalar, it's common to	set
       the record separator to undef instead of	a newline.  If you choose to
       do this (instead	of using Path::Tiny!) then be sure to localize the
       global and change it for	as short a time	as possible.

	   # BAD:
	   $/ =	undef;
	   my $content = <$fh>;

	   # BETTER:
	   my $content;
	   {
	       local $/	= undef;
	       $content	= <$fh>;
	   }

	   # A popular idiom:
	   my $content = do { local $/ = undef;	<$fh> };

       This policy also	allows the use of "my".	 Perl prevents using "my" with
       "proper"	punctuation variables, but allows $a, @ARGV, the names
       declared	by English, etc.  This is not a	good coding practice, however
       it is not the concern of	this specific policy to	complain about that.

       There are exemptions for	$_ and @_, and the English equivalent $ARG.

CONFIGURATION
       You can configure your own exemptions using the "allow" option:

	   [Variables::RequireLocalizedPunctuationVars]
	   allow = @ARGV $ARGV

       These are added to the default exemptions.

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

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

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

home | help