Perl::Critic::PolicySummary - Descriptions of the Policy modules included with Perl::Critic itself.
NAME
DESCRIPTION
POLICIES
BuiltinFunctions::ProhibitBooleanGrep
BuiltinFunctions::ProhibitComplexMappings
BuiltinFunctions::ProhibitLvalueSubstr
BuiltinFunctions::ProhibitReverseSortBlock
BuiltinFunctions::ProhibitShiftRef
BuiltinFunctions::ProhibitSleepViaSelect
BuiltinFunctions::ProhibitStringyEval
BuiltinFunctions::ProhibitStringySplit
BuiltinFunctions::ProhibitUniversalCan
BuiltinFunctions::ProhibitUniversalIsa
BuiltinFunctions::ProhibitUselessTopic
BuiltinFunctions::ProhibitVoidGrep
BuiltinFunctions::ProhibitVoidMap
BuiltinFunctions::RequireBlockGrep
BuiltinFunctions::RequireBlockMap
BuiltinFunctions::RequireGlobFunction
BuiltinFunctions::RequireSimpleSortBlock
ClassHierarchies::ProhibitAutoloading
ClassHierarchies::ProhibitExplicitISA
ClassHierarchies::ProhibitOneArgBless
CodeLayout::ProhibitHardTabs
CodeLayout::ProhibitParensWithBuiltins
CodeLayout::ProhibitQuotedWordLists
CodeLayout::ProhibitTrailingWhitespace
CodeLayout::RequireConsistentNewlines
CodeLayout::RequireTidyCode
CodeLayout::RequireTrailingCommas
ControlStructures::ProhibitCStyleForLoops
ControlStructures::ProhibitCascadingIfElse
ControlStructures::ProhibitDeepNests
ControlStructures::ProhibitLabelsWithSpecialBlockNames
ControlStructures::ProhibitMutatingListFunctions
ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
ControlStructures::ProhibitPostfixControls
ControlStructures::ProhibitUnlessBlocks
ControlStructures::ProhibitUnreachableCode
ControlStructures::ProhibitUntilBlocks
ControlStructures::ProhibitYadaOperator
Documentation::PodSpelling
Documentation::RequirePackageMatchesPodName
Documentation::RequirePodAtEnd
Documentation::RequirePodSections
ErrorHandling::RequireCarping
ErrorHandling::RequireCheckingReturnValueOfEval
InputOutput::ProhibitBacktickOperators
InputOutput::ProhibitBarewordDirHandles
InputOutput::ProhibitBarewordFileHandles
InputOutput::ProhibitExplicitStdin
InputOutput::ProhibitInteractiveTest
InputOutput::ProhibitJoinedReadline
InputOutput::ProhibitOneArgSelect
InputOutput::ProhibitReadlineInForLoop
InputOutput::ProhibitTwoArgOpen
InputOutput::RequireBracedFileHandleWithPrint
InputOutput::RequireBriefOpen
InputOutput::RequireCheckedClose
InputOutput::RequireCheckedOpen
InputOutput::RequireCheckedSyscalls
InputOutput::RequireEncodingWithUTF8Layer
Miscellanea::ProhibitFormats
Miscellanea::ProhibitTies
Miscellanea::ProhibitUnrestrictedNoCritic
Miscellanea::ProhibitUselessNoCritic
Modules::ProhibitAutomaticExportation
Modules::ProhibitConditionalUseStatements
Modules::ProhibitEvilModules
Modules::ProhibitExcessMainComplexity
Modules::ProhibitMultiplePackages
Modules::RequireBarewordIncludes
Modules::RequireEndWithOne
Modules::RequireExplicitPackage
Modules::RequireFilenameMatchesPackage
Modules::RequireNoMatchVarsWithUseEnglish
Modules::RequireVersionVar
NamingConventions::Capitalization
NamingConventions::ProhibitAmbiguousNames
Objects::ProhibitIndirectSyntax
References::ProhibitDoubleSigils
RegularExpressions::ProhibitCaptureWithoutTest
RegularExpressions::ProhibitComplexRegexes
RegularExpressions::ProhibitEnumeratedClasses
RegularExpressions::ProhibitEscapedMetacharacters
RegularExpressions::ProhibitFixedStringMatches
RegularExpressions::ProhibitSingleCharAlternation
RegularExpressions::ProhibitUnusedCapture
RegularExpressions::ProhibitUnusualDelimiters
RegularExpressions::ProhibitUselessTopic
RegularExpressions::RequireBracesForMultiline
RegularExpressions::RequireDotMatchAnything
RegularExpressions::RequireExtendedFormatting
RegularExpressions::RequireLineBoundaryMatching
Subroutines::ProhibitAmpersandSigils
Subroutines::ProhibitBuiltinHomonyms
Subroutines::ProhibitExcessComplexity
Subroutines::ProhibitExplicitReturnUndef
Subroutines::ProhibitManyArgs
Subroutines::ProhibitNestedSubs
Subroutines::ProhibitReturnSort
Subroutines::ProhibitSubroutinePrototypes
Subroutines::ProhibitUnusedPrivateSubroutines
Subroutines::ProtectPrivateSubs
Subroutines::RequireArgUnpacking
Subroutines::RequireFinalReturn
TestingAndDebugging::ProhibitNoStrict
TestingAndDebugging::ProhibitNoWarnings
TestingAndDebugging::ProhibitProlongedStrictureOverride
TestingAndDebugging::RequireTestLabels
TestingAndDebugging::RequireUseStrict
TestingAndDebugging::RequireUseWarnings
ValuesAndExpressions::ProhibitCommaSeparatedStatements
ValuesAndExpressions::ProhibitComplexVersion
ValuesAndExpressions::ProhibitConstantPragma
ValuesAndExpressions::ProhibitEmptyQuotes
ValuesAndExpressions::ProhibitEscapedCharacters
ValuesAndExpressions::ProhibitImplicitNewlines
ValuesAndExpressions::ProhibitInterpolationOfLiterals
ValuesAndExpressions::ProhibitLeadingZeros
ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
ValuesAndExpressions::ProhibitMagicNumbers
ValuesAndExpressions::ProhibitMismatchedOperators
ValuesAndExpressions::ProhibitMixedBooleanOperators
ValuesAndExpressions::ProhibitNoisyQuotes
ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator
ValuesAndExpressions::ProhibitVersionStrings
ValuesAndExpressions::RequireConstantVersion
ValuesAndExpressions::RequireInterpolationOfMetachars
ValuesAndExpressions::RequireNumberSeparators
ValuesAndExpressions::RequireQuotedHeredocTerminator
ValuesAndExpressions::RequireUpperCaseHeredocTerminator
Variables::ProhibitAugmentedAssignmentInDeclaration
Variables::ProhibitConditionalDeclarations
Variables::ProhibitEvilVariables
Variables::ProhibitLocalVars
Variables::ProhibitMatchVars
Variables::ProhibitPackageVars
Variables::ProhibitPerl4PackageNames
Variables::ProhibitPunctuationVars
Variables::ProhibitReusedNames
Variables::ProhibitUnusedVariables
Variables::ProtectPrivateVars
Variables::RequireInitializationForLocalVars
Variables::RequireLexicalLoopIterators
Variables::RequireLocalizedPunctuationVars
Variables::RequireNegativeIndices
VERSION
AUTHOR
COPYRIGHT
NAME
Perl::Critic::PolicySummary
− Descriptions of the Policy modules included with
Perl::Critic itself.
DESCRIPTION
The following
Policy modules are distributed with Perl::Critic. (There are
additional Policies that can be found in add−on
distributions.) The Policy modules have been categorized
according to the table of contents in Damian Conway's book
Perl Best Practices. Since most coding standards take
the form "do this..." or "don't do
that...", I have adopted the convention of naming each
module "RequireSomething" or
"ProhibitSomething". Each Policy is listed here
with its default severity. If you don't agree with the
default severity, you can change it in your
.perlcriticrc file (try "perlcritic
−−profile−proto" for a starting
version). See the documentation of each module for its
specific details.
POLICIES
BuiltinFunctions::ProhibitBooleanGrep
Use
"any" from "List::Util",
"List::SomeUtils", or "List::MoreUtils"
instead of "grep" in boolean context. [Default
severity 2]
BuiltinFunctions::ProhibitComplexMappings
Map blocks
should have a single statement. [Default severity 3]
BuiltinFunctions::ProhibitLvalueSubstr
Use
4−argument "substr" instead of writing
"substr($foo, 2, 6) = $bar". [Default severity
3]
BuiltinFunctions::ProhibitReverseSortBlock
Forbid $b before
$a in sort blocks. [Default severity 1]
BuiltinFunctions::ProhibitShiftRef
Prohibit
"\shift" in code [Default severity 3]
BuiltinFunctions::ProhibitSleepViaSelect
Use Time::HiRes
instead of something like "select(undef, undef, undef,
.05)". [Default severity 5]
BuiltinFunctions::ProhibitStringyEval
Write "eval
{ my $foo; bar($foo) }" instead of "eval "my
$foo; bar($foo);"". [Default severity 5]
BuiltinFunctions::ProhibitStringySplit
Write
"split /−/, $string" instead of "split
'−', $string". [Default severity 2]
BuiltinFunctions::ProhibitUniversalCan
Write "eval
{ $foo−>can($name) }" instead of
"UNIVERSAL::can($foo, $name)". [Default severity
3]
BuiltinFunctions::ProhibitUniversalIsa
Write "eval
{ $foo−>isa($pkg) }" instead of
"UNIVERSAL::isa($foo, $pkg)". [Default severity
3]
BuiltinFunctions::ProhibitUselessTopic
Don't pass $_ to
built−in functions that assume it, or to most filetest
operators. [Default severity 2]
BuiltinFunctions::ProhibitVoidGrep
Don't use
"grep" in void contexts. [Default severity 3]
BuiltinFunctions::ProhibitVoidMap
Don't use
"map" in void contexts. [Default severity 3]
BuiltinFunctions::RequireBlockGrep
Write "grep
{ /$pattern/ } @list" instead of "grep /$pattern/,
@list". [Default severity 4]
BuiltinFunctions::RequireBlockMap
Write "map
{ /$pattern/ } @list" instead of "map /$pattern/,
@list". [Default severity 4]
BuiltinFunctions::RequireGlobFunction
Use "glob
q{*}" instead of <*>. [Default severity 5]
BuiltinFunctions::RequireSimpleSortBlock
Sort blocks
should have a single statement. [Default severity 3]
ClassHierarchies::ProhibitAutoloading
AUTOLOAD methods
should be avoided. [Default severity 3]
ClassHierarchies::ProhibitExplicitISA
Employ "use
parent" instead of @ISA. [Default severity 3]
ClassHierarchies::ProhibitOneArgBless
Write
"bless {}, $class;" instead of just "bless
{};". [Default severity 5]
CodeLayout::ProhibitHardTabs
Use spaces
instead of tabs. [Default severity 3]
CodeLayout::ProhibitParensWithBuiltins
Write "open
$handle, $path" instead of "open($handle,
$path)". [Default severity 1]
CodeLayout::ProhibitQuotedWordLists
Write
"qw(foo bar baz)" instead of "('foo', 'bar',
'baz')". [Default severity 2]
CodeLayout::ProhibitTrailingWhitespace
Don't use
whitespace at the end of lines. [Default severity 1]
CodeLayout::RequireConsistentNewlines
Use the same
newline through the source. [Default severity 4]
CodeLayout::RequireTidyCode
Must run code
through perltidy. [Default severity 1]
CodeLayout::RequireTrailingCommas
Put a comma at
the end of every multi−line list declaration,
including the last one. [Default severity 1]
ControlStructures::ProhibitCStyleForLoops
Write for(0..20)
instead of "for($i=0; $i<=20; $i++)". [Default
severity 2]
ControlStructures::ProhibitCascadingIfElse
Don't write long
"if−elsif−elsif−elsif−elsif...else"
chains. [Default severity 3]
ControlStructures::ProhibitDeepNests
Don't write
deeply nested loops and conditionals. [Default severity
3]
ControlStructures::ProhibitLabelsWithSpecialBlockNames
Don't use labels
that are the same as the special block names. [Default
severity 4]
ControlStructures::ProhibitMutatingListFunctions
Don't modify $_
in list functions. [Default severity 5]
ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions
Don't use
operators like "not", "!˜", and
"le" within "until" and
"unless". [Default severity 3]
ControlStructures::ProhibitPostfixControls
Write
"if($condition){ do_something() }" instead of
"do_something() if $condition". [Default severity
2]
ControlStructures::ProhibitUnlessBlocks
Write "if(!
$condition)" instead of unless($condition). [Default
severity 2]
ControlStructures::ProhibitUnreachableCode
Don't write code
after an unconditional "die, exit, or next".
[Default severity 4]
ControlStructures::ProhibitUntilBlocks
Write
"while(! $condition)" instead of
until($condition). [Default severity 2]
ControlStructures::ProhibitYadaOperator
Never use
"..." in production code. [Default severity 4]
Documentation::PodSpelling
Check your
spelling. [Default severity 1]
Documentation::RequirePackageMatchesPodName
The "=head1
NAME" section should match the package. [Default
severity 1]
Documentation::RequirePodAtEnd
All POD should
be after "__END__". [Default severity 1]
Documentation::RequirePodSections
Organize your
POD into the customary sections. [Default severity 2]
ErrorHandling::RequireCarping
Use functions
from Carp instead of "warn" or "die".
[Default severity 3]
ErrorHandling::RequireCheckingReturnValueOfEval
You can't depend
upon the value of $@/$EVAL_ERROR to tell whether an
"eval" failed. [Default severity 3]
InputOutput::ProhibitBacktickOperators
Discourage stuff
like "@files = `ls $directory`". [Default severity
3]
InputOutput::ProhibitBarewordDirHandles
Write
"opendir my $dh, $dirname;" instead of
"opendir DH, $dirname;". [Default severity 5]
InputOutput::ProhibitBarewordFileHandles
Write "open
my $fh, q{<}, $filename;" instead of "open FH,
q{<}, $filename;". [Default severity 5]
InputOutput::ProhibitExplicitStdin
Use
"<>" or "<ARGV>" or a
prompting module instead of "<STDIN>".
[Default severity 4]
InputOutput::ProhibitInteractiveTest
Use
prompt() instead of −t. [Default severity
5]
InputOutput::ProhibitJoinedReadline
Use "local
$/ = undef" or Path::Tiny instead of joined readline.
[Default severity 3]
InputOutput::ProhibitOneArgSelect
Never write
select($fh). [Default severity 4]
InputOutput::ProhibitReadlineInForLoop
Write
"while( $line = <> ){...}" instead of
"for(<>){...}". [Default severity 4]
InputOutput::ProhibitTwoArgOpen
Write "open
$fh, q{<}, $filename;" instead of "open $fh,
"<$filename";". [Default severity 5]
InputOutput::RequireBracedFileHandleWithPrint
Write
"print {$FH} $foo, $bar;" instead of "print
$FH $foo, $bar;". [Default severity 1]
InputOutput::RequireBriefOpen
Close
filehandles as soon as possible after opening them. [Default
severity 4]
InputOutput::RequireCheckedClose
Write "my
$error = close $fh;" instead of "close $fh;".
[Default severity 2]
InputOutput::RequireCheckedOpen
Write "my
$error = open $fh, $mode, $filename;" instead of
"open $fh, $mode, $filename;". [Default severity
3]
InputOutput::RequireCheckedSyscalls
Return value of
flagged function ignored. [Default severity 1]
InputOutput::RequireEncodingWithUTF8Layer
Write "open
$fh, q{<:encoding(UTF−8)}, $filename;" instead
of "open $fh, q{<:utf8}, $filename;". [Default
severity 5]
Miscellanea::ProhibitFormats
Do not use
"format". [Default severity 3]
Miscellanea::ProhibitTies
Do not use
"tie". [Default severity 2]
Miscellanea::ProhibitUnrestrictedNoCritic
Forbid a bare
"## no critic" [Default severity 3]
Miscellanea::ProhibitUselessNoCritic
Remove
ineffective "## no critic" annotations. [Default
severity 2]
Modules::ProhibitAutomaticExportation
Export symbols
via @EXPORT_OK or %EXPORT_TAGS instead of @EXPORT. [Default
severity 4]
Modules::ProhibitConditionalUseStatements
Avoid putting
conditional logic around compile−time includes.
[Default severity 3]
Modules::ProhibitEvilModules
Ban modules that
aren't blessed by your shop. [Default severity 5]
Modules::ProhibitExcessMainComplexity
Minimize
complexity in code that is outside of subroutines.
[Default severity 3]
Modules::ProhibitMultiplePackages
Put packages
(especially subclasses) in separate files. [Default severity
4]
Modules::RequireBarewordIncludes
Write
"require Module" instead of "require
'Module.pm'". [Default severity 5]
Modules::RequireEndWithOne
End each module
with an explicitly "1;" instead of some funky
expression. [Default severity 4]
Modules::RequireExplicitPackage
Always make the
"package" explicit. [Default severity 4]
Modules::RequireFilenameMatchesPackage
Package
declaration must match filename. [Default severity 5]
Modules::RequireNoMatchVarsWithUseEnglish
"use
English" must be passed a
"−no_match_vars" argument. [Default severity
2]
Modules::RequireVersionVar
Give every
module a $VERSION number. [Default severity 2]
NamingConventions::Capitalization
Distinguish
different program components by case. [Default severity
1]
NamingConventions::ProhibitAmbiguousNames
Don't use vague
variable or subroutine names like 'last' or 'record'.
[Default severity 3]
Objects::ProhibitIndirectSyntax
Prohibit
indirect object call syntax. [Default severity 4]
References::ProhibitDoubleSigils
Write "@{
$array_ref }" instead of @$array_ref. [Default severity
2]
RegularExpressions::ProhibitCaptureWithoutTest
Capture variable
used outside conditional. [Default severity 3]
RegularExpressions::ProhibitComplexRegexes
Split long
regexps into smaller "qr//" chunks. [Default
severity 3]
RegularExpressions::ProhibitEnumeratedClasses
Use named
character classes instead of explicit character lists.
[Default severity 1]
RegularExpressions::ProhibitEscapedMetacharacters
Use character
classes for literal meta−characters instead of
escapes. [Default severity 1]
RegularExpressions::ProhibitFixedStringMatches
Use
"eq" or hash instead of fixed−pattern
regexps. [Default severity 2]
RegularExpressions::ProhibitSingleCharAlternation
Use
"[abc]" instead of "a|b|c". [Default
severity 1]
RegularExpressions::ProhibitUnusedCapture
Only use a
capturing group if you plan to use the captured value.
[Default severity 3]
RegularExpressions::ProhibitUnusualDelimiters
Use only
"//" or "{}" to delimit regexps.
[Default severity 1]
RegularExpressions::ProhibitUselessTopic
Don't use $_ to
match against regexes. [Default severity 2]
RegularExpressions::RequireBracesForMultiline
Use
"{" and "}" to delimit multi−line
regexps. [Default severity 1]
RegularExpressions::RequireDotMatchAnything
Always use the
"/s" modifier with regular expressions. [Default
severity 2]
RegularExpressions::RequireExtendedFormatting
Always use the
"/x" modifier with regular expressions. [Default
severity 3]
RegularExpressions::RequireLineBoundaryMatching
Always use the
"/m" modifier with regular expressions. [Default
severity 2]
Subroutines::ProhibitAmpersandSigils
Don't call
functions with a leading ampersand sigil. [Default severity
2]
Subroutines::ProhibitBuiltinHomonyms
Don't declare
your own "open" function. [Default severity 4]
Subroutines::ProhibitExcessComplexity
Minimize
complexity by factoring code into smaller subroutines.
[Default severity 3]
Subroutines::ProhibitExplicitReturnUndef
Return failure
with bare "return" instead of "return
undef". [Default severity 5]
Subroutines::ProhibitManyArgs
Too many
arguments. [Default severity 3]
Subroutines::ProhibitNestedSubs
"sub never
{ sub correct {} }". [Default severity 5]
Subroutines::ProhibitReturnSort
Behavior of
"sort" is not defined if called in scalar context.
[Default severity 5]
Subroutines::ProhibitSubroutinePrototypes
Don't write
"sub my_function (@@) {}". [Default severity
5]
Subroutines::ProhibitUnusedPrivateSubroutines
Prevent unused
private subroutines. [Default severity 3]
Subroutines::ProtectPrivateSubs
Prevent access
to private subs in other packages. [Default severity 3]
Subroutines::RequireArgUnpacking
Always unpack @_
first. [Default severity 4]
Subroutines::RequireFinalReturn
End every path
through a subroutine with an explicit "return"
statement. [Default severity 4]
TestingAndDebugging::ProhibitNoStrict
Prohibit various
flavors of "no strict". [Default severity 5]
TestingAndDebugging::ProhibitNoWarnings
Prohibit various
flavors of "no warnings". [Default severity 4]
TestingAndDebugging::ProhibitProlongedStrictureOverride
Don't turn off
strict for large blocks of code. [Default severity 4]
TestingAndDebugging::RequireTestLabels
Tests should all
have labels. [Default severity 3]
TestingAndDebugging::RequireUseStrict
Always "use
strict". [Default severity 5]
TestingAndDebugging::RequireUseWarnings
Always "use
warnings". [Default severity 4]
ValuesAndExpressions::ProhibitCommaSeparatedStatements
Don't use the
comma operator as a statement separator. [Default severity
4]
ValuesAndExpressions::ProhibitComplexVersion
Prohibit version
values from outside the module. [Default severity 3]
ValuesAndExpressions::ProhibitConstantPragma
Don't "use
constant FOO => 15". [Default severity 4]
ValuesAndExpressions::ProhibitEmptyQuotes
Write
"q{}" instead of ''. [Default severity 2]
ValuesAndExpressions::ProhibitEscapedCharacters
Write
"\N{DELETE}" instead of "\x7F", etc.
[Default severity 2]
ValuesAndExpressions::ProhibitImplicitNewlines
Use
concatenation or HEREDOCs instead of literal line breaks in
strings. [Default severity 3]
ValuesAndExpressions::ProhibitInterpolationOfLiterals
Always use
single quotes for literal strings. [Default severity 1]
ValuesAndExpressions::ProhibitLeadingZeros
Write oct(755)
instead of 0755. [Default severity 5]
ValuesAndExpressions::ProhibitLongChainsOfMethodCalls
Long chains of
method calls indicate tightly coupled code. [Default
severity 2]
ValuesAndExpressions::ProhibitMagicNumbers
Don't use values
that don't explain themselves. [Default severity 2]
ValuesAndExpressions::ProhibitMismatchedOperators
Don't mix
numeric operators with string operands, or vice−versa.
[Default severity 3]
ValuesAndExpressions::ProhibitMixedBooleanOperators
Write "
!$foo && $bar || $baz " instead of " not
$foo && $bar or $baz". [Default severity 4]
ValuesAndExpressions::ProhibitNoisyQuotes
Use
"q{}" or "qq{}" instead of quotes for
awkward−looking strings. [Default severity 2]
ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters
Don't use quotes
("'", """, "`") as
delimiters for the quote−like operators. [Default
severity 3]
ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator
Don't write
" print <<'__END__' ". [Default severity
3]
ValuesAndExpressions::ProhibitVersionStrings
Don't use
strings like "v1.4" or 1.4.5 when including other
modules. [Default severity 3]
ValuesAndExpressions::RequireConstantVersion
Require $VERSION
to be a constant rather than a computed value. [Default
severity 2]
ValuesAndExpressions::RequireInterpolationOfMetachars
Warns that you
might have used single quotes when you really wanted
double−quotes. [Default severity 1]
ValuesAndExpressions::RequireNumberSeparators
Write "
141_234_397.0145 " instead of 141234397.0145 . [Default
severity 2]
ValuesAndExpressions::RequireQuotedHeredocTerminator
Write "
print <<'THE_END' " or " print
<<"THE_END" ". [Default severity 3]
ValuesAndExpressions::RequireUpperCaseHeredocTerminator
Write "
<<'THE_END'; " instead of "
<<'theEnd'; ". [Default severity 2]
Variables::ProhibitAugmentedAssignmentInDeclaration
Do not write
" my $foo .= 'bar'; ". [Default severity 4]
Variables::ProhibitConditionalDeclarations
Do not write
" my $foo = $bar if $baz; ". [Default severity
5]
Variables::ProhibitEvilVariables
Ban variables
that aren't blessed by your shop. [Default severity 5]
Variables::ProhibitLocalVars
Use
"my" instead of "local", except when you
have to. [Default severity 2]
Variables::ProhibitMatchVars
Avoid
"$`", $&, "$'" and their English
equivalents. [Default severity 4]
Variables::ProhibitPackageVars
Eliminate
globals declared with "our" or "use
vars". [Default severity 3]
Variables::ProhibitPerl4PackageNames
Use double colon
(::) to separate package name components instead of single
quotes ('). [Default severity 2]
Variables::ProhibitPunctuationVars
Write
$EVAL_ERROR instead of $@. [Default severity 2]
Variables::ProhibitReusedNames
Do not reuse a
variable name in a lexical scope [Default severity 3]
Variables::ProhibitUnusedVariables
Don't ask for
storage you don't need. [Default severity 3]
Variables::ProtectPrivateVars
Prevent access
to private vars in other packages. [Default severity 3]
Variables::RequireInitializationForLocalVars
Write
"local $foo = $bar;" instead of just "local
$foo;". [Default severity 3]
Variables::RequireLexicalLoopIterators
Write "for
my $element (@list) {...}" instead of "for
$element (@list) {...}". [Default severity 5]
Variables::RequireLocalizedPunctuationVars
Magic variables
should be assigned as "local". [Default severity
4]
Variables::RequireNegativeIndices
Negative array
index should be used. [Default severity 4]
VERSION
This is part of
Perl::Critic version 1.126.
AUTHOR
Jeffrey Ryan
Thalhammer <jeff@imaginative−software.com>
COPYRIGHT
Copyright (c)
2005−2011 Imaginative Software Systems. All 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.
Updated 2026-06-01 -
jenkler.se |
uex.se