The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Globals
# severity = 5
severity = 1
# force = 0
# only = 0
# profile-strictness = warn
# color = 0
# pager = 
# top = 0
# verbose = 4
#verbose = 11
verbose = 2
# include = 
# exclude = 
# single-policy = 
# theme = 

# Use `List::MoreUtils::any' instead of `grep' in boolean context.
[-BuiltinFunctions::ProhibitBooleanGrep]
# set_themes                         = core pbp performance
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Map blocks should have a single statement.
[BuiltinFunctions::ProhibitComplexMappings]
# set_themes                         = complexity core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The maximum number of statements to allow within a map block.
# Minimum value 1. No maximum.
# max_statements = 1


# Use 4-argument `substr' instead of writing `substr($foo, 2, 6) = $bar'.
[BuiltinFunctions::ProhibitLvalueSubstr]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Forbid $b before $a in sort blocks.
[BuiltinFunctions::ProhibitReverseSortBlock]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit


# Use Time::HiRes instead of something like `select(undef, undef, undef, .05)'.
[BuiltinFunctions::ProhibitSleepViaSelect]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# Write `eval { my $foo; bar($foo) }' instead of `eval "my $foo; bar($foo);"'.
[BuiltinFunctions::ProhibitStringyEval]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# Write `split /-/, $string' instead of `split '-', $string'.
[BuiltinFunctions::ProhibitStringySplit]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Write `eval { $foo->can($name) }' instead of `UNIVERSAL::can($foo, $name)'.
[BuiltinFunctions::ProhibitUniversalCan]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
severity                           = 4
# maximum_violations_per_document    = no_limit


# Write `eval { $foo->isa($pkg) }' instead of `UNIVERSAL::isa($foo, $pkg)'.
[BuiltinFunctions::ProhibitUniversalIsa]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
severity                           = 4
# maximum_violations_per_document    = no_limit


# Don't use `grep' in void contexts.
[BuiltinFunctions::ProhibitVoidGrep]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Don't use `map' in void contexts.
[BuiltinFunctions::ProhibitVoidMap]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Write `grep { $_ =~ /$pattern/ } @list' instead of `grep /$pattern/, @list'.
[BuiltinFunctions::RequireBlockGrep]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Write `map { $_ =~ /$pattern/ } @list' instead of `map /$pattern/, @list'.
[BuiltinFunctions::RequireBlockMap]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Use `glob q{*}' instead of <*>.
[BuiltinFunctions::RequireGlobFunction]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# Sort blocks should have a single statement.
[BuiltinFunctions::RequireSimpleSortBlock]
# set_themes                         = complexity core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# AUTOLOAD methods should be avoided.
[ClassHierarchies::ProhibitAutoloading]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Employ `use base' instead of `@ISA'.
[ClassHierarchies::ProhibitExplicitISA]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
severity                           = 4
# maximum_violations_per_document    = no_limit


# Write `bless {}, $class;' instead of just `bless {};'.
[ClassHierarchies::ProhibitOneArgBless]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# Use spaces instead of tabs.
[CodeLayout::ProhibitHardTabs]
# set_themes                         = core cosmetic
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# Allow hard tabs before first non-whitespace character.
# allow_leading_tabs = 1


# Write `open $handle, $path' instead of `open($handle, $path)'.
[CodeLayout::ProhibitParensWithBuiltins]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit


# Write `qw(foo bar baz)' instead of `('foo', 'bar', 'baz')'.
[CodeLayout::ProhibitQuotedWordLists]
# set_themes                         = core cosmetic
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit

# The minimum number of words in a list that will be complained about.
# Minimum value 1. No maximum.
# min_elements = 2

# Complain even if there are non-word characters in the values.
# strict = 0


# Don't use whitespace at the end of lines.
[CodeLayout::ProhibitTrailingWhitespace]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit


# Use the same newline through the source.
[CodeLayout::RequireConsistentNewlines]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Put a comma at the end of every multi-line list declaration, including the last one.
[CodeLayout::RequireTrailingCommas]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
severity                           = 3
# maximum_violations_per_document    = no_limit

[-CodeLayout::RequireTidyCode]


# Write `for(0..20)' instead of `for($i=0; $i<=20; $i++)'.
[-ControlStructures::ProhibitCStyleForLoops]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 2
severity                           = 3
# maximum_violations_per_document    = no_limit


# Don't write long "if-elsif-elsif-elsif-elsif...else" chains.
[ControlStructures::ProhibitCascadingIfElse]
# set_themes                         = complexity core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The maximum number of alternatives that will be allowed.
# Minimum value 1. No maximum.
# max_elsif = 2


# Don't write deeply nested loops and conditionals.
[ControlStructures::ProhibitDeepNests]
# set_themes                         = complexity core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The maximum number of nested constructs to allow.
# Minimum value 1. No maximum.
# max_nests = 5


# Don't use labels that are the same as the special block names.
[ControlStructures::ProhibitLabelsWithSpecialBlockNames]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Don't modify `$_' in list functions.
[ControlStructures::ProhibitMutatingListFunctions]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit

# The base set of functions to check.
# list_funcs = map grep List::Util::first List::MoreUtils::any List::MoreUtils::all List::MoreUtils::none List::MoreUtils::notall List::MoreUtils::true List::MoreUtils::false List::MoreUtils::firstidx List::MoreUtils::first_index List::MoreUtils::lastidx List::MoreUtils::last_index List::MoreUtils::insert_after List::MoreUtils::insert_after_string

# The set of functions to check, in addition to those given in list_funcs.
# add_list_funcs = 


# Don't use operators like `not', `!~', and `le' within `until' and `unless'.
[ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Write `if($condition){ do_something() }' instead of `do_something() if $condition'.
[ControlStructures::ProhibitPostfixControls]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
severity                           = 4
# maximum_violations_per_document    = no_limit

# The permitted postfix controls.
# Valid values: for, foreach, if, unless, until, while.
# allow = 

# The exempt flow control functions.
# flowcontrol = carp cluck confess croak die exit goto warn


# Write `if(! $condition)' instead of `unless($condition)'.
[ControlStructures::ProhibitUnlessBlocks]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
severity                           = 4
# maximum_violations_per_document    = no_limit


# Don't write code after an unconditional `die, exit, or next'.
[ControlStructures::ProhibitUnreachableCode]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Write `while(! $condition)' instead of `until($condition)'.
[ControlStructures::ProhibitUntilBlocks]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
severity                           = 4
# maximum_violations_per_document    = no_limit


[-Documentation::PodSpelling]
spell_command = aspell list -l en


# The `=head1 NAME' section should match the package.
[Documentation::RequirePackageMatchesPodName]
# set_themes                         = core cosmetic
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit


# All POD should be after `__END__'.
[Documentation::RequirePodAtEnd]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
severity                           = 2
# maximum_violations_per_document    = no_limit


# Organize your POD into the customary sections.
[-Documentation::RequirePodSections]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit

# The sections to require for modules (separated by qr/\s* [|] \s*/xms).
# lib_sections = 

# The sections to require for programs (separated by qr/\s* [|] \s*/xms).
# script_sections = 

# The origin of sections to use.
# Valid values: book, book_first_edition, module_starter_pbp, module_starter_pbp_0_0_3.
# source = book_first_edition
source = module_starter_pbp_0_0_3

# The spelling of sections to use.
# Valid values: en_AU, en_US.
# language = 
language = en_US


[-Documentation::RequirePodLinksIncludeText]


# Use functions from Carp instead of `warn' or `die'.
[ErrorHandling::RequireCarping]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
severity                           = 4
# maximum_violations_per_document    = no_limit

# Don't complain about die or warn if the message ends in a newline.
# allow_messages_ending_with_newlines = 1


# You can't depend upon the value of `$@'/`$EVAL_ERROR' to tell whether an `eval' failed.
[ErrorHandling::RequireCheckingReturnValueOfEval]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Discourage stuff like `@files = `ls $directory`'.
[-InputOutput::ProhibitBacktickOperators]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# Allow backticks everywhere except in void contexts.
# only_in_void_context = 


# Write `open my $fh, q{<}, $filename;' instead of `open FH, q{<}, $filename;'.
[InputOutput::ProhibitBarewordFileHandles]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# Use "<>" or "<ARGV>" or a prompting module instead of "<STDIN>".
[InputOutput::ProhibitExplicitStdin]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Use prompt() instead of -t.
[InputOutput::ProhibitInteractiveTest]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
severity                           = 4
# maximum_violations_per_document    = no_limit


# Use `local $/ = undef' or File::Slurp instead of joined readline.
[InputOutput::ProhibitJoinedReadline]
# set_themes                         = core pbp performance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Never write `select($fh)'.
[InputOutput::ProhibitOneArgSelect]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Write `while( $line = <> ){...}' instead of `for(<>){...}'.
[InputOutput::ProhibitReadlineInForLoop]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
severity                           = 5
# maximum_violations_per_document    = no_limit


# Write `open $fh, q{<}, $filename;' instead of `open $fh, "<$filename";'.
[InputOutput::ProhibitTwoArgOpen]
# set_themes                         = bugs core pbp security
# add_themes                         =
# severity                           = 5
severity                           = 4
# maximum_violations_per_document    = no_limit


# Write `print {$FH} $foo, $bar;' instead of `print $FH $foo, $bar;'.
[InputOutput::RequireBracedFileHandleWithPrint]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
severity                           = 3
# maximum_violations_per_document    = no_limit


# Close filehandles as soon as possible after opening them.
[InputOutput::RequireBriefOpen]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit

# The maximum number of lines between an open() and a close().
# Minimum value 1. No maximum.
# lines = 9


# Write `my $error = close $fh;' instead of `close $fh;'.
[InputOutput::RequireCheckedClose]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Write `my $error = open $fh, $mode, $filename;' instead of `open $fh, $mode, $filename;'.
[InputOutput::RequireCheckedOpen]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Return value of flagged function ignored.
[InputOutput::RequireCheckedSyscalls]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit

# The set of functions to require checking the return value of.
# functions = open close print
functions = open close


# Do not use `format'.
[Miscellanea::ProhibitFormats]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Do not use `tie'.
[Miscellanea::ProhibitTies]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 2
severity                           = 4
# maximum_violations_per_document    = no_limit


[-Miscellanea::ProhibitUnrestrictedNoCritic]


# Export symbols via `@EXPORT_OK' or `%EXPORT_TAGS' instead of `@EXPORT'.
[Modules::ProhibitAutomaticExportation]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Ban modules that aren't blessed by your shop.
[Modules::ProhibitEvilModules]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit

# The names of or patterns for modules to forbid.
# modules = 


# Minimize complexity in code that is outside of subroutines.
[Modules::ProhibitExcessMainComplexity]
# set_themes                         = complexity core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The maximum complexity score allowed.
# Minimum value 1. No maximum.
# max_mccabe = 20


# Put packages (especially subclasses) in separate files.
[Modules::ProhibitMultiplePackages]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Write `require Module' instead of `require 'Module.pm''.
[Modules::RequireBarewordIncludes]
# set_themes                         = core portability
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# End each module with an explicitly `1;' instead of some funky expression.
[Modules::RequireEndWithOne]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Always make the `package' explicit.
[Modules::RequireExplicitPackage]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = 1

# Don't require programs to contain a package statement.
# exempt_scripts = 1


# Package declaration must match filename.
[Modules::RequireFilenameMatchesPackage]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# `use English' must be passed a `-no_match_vars' argument.
[Modules::RequireNoMatchVarsWithUseEnglish]
# set_themes                         = core performance
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Give every module a `$VERSION' number.
[Modules::RequireVersionVar]
# set_themes                         = core pbp readability
# add_themes                         =
# severity                           = 2
severity                           = 4
# maximum_violations_per_document    = no_limit


# Don't use vague variable or subroutine names like 'last' or 'record'.
[NamingConventions::ProhibitAmbiguousNames]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The variable names that are not to be allowed.
# forbid = abstract bases close contract last left no record right second set


[NamingConventions::Capitalization]
file_lexical_variables = :no_restriction

# Write `@{ $array_ref }' instead of `@$array_ref'.
[References::ProhibitDoubleSigils]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
severity                           = 4
# maximum_violations_per_document    = no_limit


# Capture variable used outside conditional.
[-RegularExpressions::ProhibitCaptureWithoutTest]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
severity                           = 4
# maximum_violations_per_document    = no_limit


# Split long regexps into smaller `qr//' chunks.
[RegularExpressions::ProhibitComplexRegexes]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The maximum number of characters to allow in a regular expression.
# Minimum value 1. No maximum.
# max_characters = 60


# Use named character classes instead of explicit character lists.
[RegularExpressions::ProhibitEnumeratedClasses]
# set_themes                         = core cosmetic pbp unicode
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit


# Use character classes for literal meta-characters instead of escapes.
[RegularExpressions::ProhibitEscapedMetacharacters]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit


# Use `eq' or hash instead of fixed-pattern regexps.
[RegularExpressions::ProhibitFixedStringMatches]
# set_themes                         = core pbp performance
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Use `[abc]' instead of `a|b|c'.
[RegularExpressions::ProhibitSingleCharAlternation]
# set_themes                         = core pbp performance
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit


# Only use a capturing group if you plan to use the captured value.
[RegularExpressions::ProhibitUnusedCapture]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Use only `//' or `{}' to delimit regexps.
[RegularExpressions::ProhibitUnusualDelimiters]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit

# In addition to allowing '{}', allow '()', '[]', and '{}'.
# allow_all_brackets = 


# Use `{' and `}' to delimit multi-line regexps.
[RegularExpressions::RequireBracesForMultiline]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit

# In addition to allowing '{}', allow '()', '[]', and '{}'.
# allow_all_brackets = 


# Always use the `/s' modifier with regular expressions.
[RegularExpressions::RequireDotMatchAnything]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Always use the `/x' modifier with regular expressions.
[-RegularExpressions::RequireExtendedFormatting]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
severity                           = 5
# maximum_violations_per_document    = no_limit

# The number of characters that a regular expression must contain before this policy will complain.
# Minimum value 0. No maximum.
# minimum_regex_length_to_complain_about = 0

# Should regexes that only contain whitespace and word characters be complained about?.
# strict = 0


# Always use the `/m' modifier with regular expressions.
[RegularExpressions::RequireLineBoundaryMatching]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
severity                           = 5
# maximum_violations_per_document    = no_limit


# Don't call functions with a leading ampersand sigil.
[Subroutines::ProhibitAmpersandSigils]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Don't declare your own `open' function.
[Subroutines::ProhibitBuiltinHomonyms]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Minimize complexity by factoring code into smaller subroutines.
[Subroutines::ProhibitExcessComplexity]
# set_themes                         = complexity core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The maximum complexity score allowed.
# Minimum value 1. No maximum.
# max_mccabe = 20


# Return failure with bare `return' instead of `return undef'.
[Subroutines::ProhibitExplicitReturnUndef]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# Too many arguments.
[Subroutines::ProhibitManyArgs]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The maximum number of arguments to allow a subroutine to have.
# Minimum value 1. No maximum.
# max_arguments = 5


# `sub never { sub correct {} }'.
[Subroutines::ProhibitNestedSubs]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# Don't write `sub my_function (@@) {}'.
[Subroutines::ProhibitSubroutinePrototypes]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
severity                           = 4
# maximum_violations_per_document    = no_limit


# Prevent access to private subs in other packages.
[Subroutines::ProtectPrivateSubs]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Always unpack `@_' first.
[Subroutines::RequireArgUnpacking]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit

# The number of statements to allow without unpacking.
# Minimum value 0. No maximum.
# short_subroutine_statements = 0


# End every path through a subroutine with an explicit `return' statement.
[Subroutines::RequireFinalReturn]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
severity                           = 5
# maximum_violations_per_document    = no_limit

# The additional subroutines to treat as terminal.
# Values that are always included: Carp::confess, Carp::croak, confess, croak, die, exec, exit, throw.
# terminal_funcs = 


# Prohibit various flavors of `no strict'.
[TestingAndDebugging::ProhibitNoStrict]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit

# Allow vars, subs, and/or refs.
# allow = 
allow = refs


# Prohibit various flavors of `no warnings'.
[TestingAndDebugging::ProhibitNoWarnings]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit

# Permitted warning categories.
# allow = 

# Allow "no warnings" if it restricts the kinds of warnings that are turned off.
# allow_with_category_restriction = 0


# Don't turn off strict for large blocks of code.
[TestingAndDebugging::ProhibitProlongedStrictureOverride]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit

# The maximum number of statements in a no strict block.
# Minimum value 1. No maximum.
# statements = 3


# Tests should all have labels.
[TestingAndDebugging::RequireTestLabels]
# set_themes                         = core maintenance tests
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The additional modules to require labels for.
# Values that are always included: Test::More.
# modules = 


# Always `use strict'.
[TestingAndDebugging::RequireUseStrict]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = 1


# Always `use warnings'.
[TestingAndDebugging::RequireUseWarnings]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = 1


# Don't use the comma operator as a statement separator.
[ValuesAndExpressions::ProhibitCommaSeparatedStatements]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit

# Allow map and grep blocks to return lists.
# allow_last_statement_to_be_comma_separated_in_map_and_grep = 0


# Don't `use constant $FOO => 15'.
[-ValuesAndExpressions::ProhibitConstantPragma]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Write `q{}' instead of `'''.
[ValuesAndExpressions::ProhibitEmptyQuotes]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Write `"\N{DELETE}"' instead of `"\x7F"', etc.
[ValuesAndExpressions::ProhibitEscapedCharacters]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Use concatenation or HEREDOCs instead of literal line breaks in strings.
[ValuesAndExpressions::ProhibitImplicitNewlines]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Always use single quotes for literal strings.
[ValuesAndExpressions::ProhibitInterpolationOfLiterals]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit

# Kinds of delimiters to permit, e.g. "qq{", "qq(", "qq[", "qq/".
# allow = 

# If the string contains ' characters, allow "" to quote it.
# allow_if_string_contains_single_quote = 0


# Write `oct(755)' instead of `0755'.
[ValuesAndExpressions::ProhibitLeadingZeros]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit

# Don't allow any leading zeros at all.  Otherwise builtins that deal with Unix permissions, e.g. chmod, don't get flagged.
# strict = 0


# Long chains of method calls indicate tightly coupled code.
[ValuesAndExpressions::ProhibitLongChainsOfMethodCalls]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit

# The number of chained calls to allow.
# Minimum value 1. No maximum.
# max_chain_length = 3


# Don't use values that don't explain themselves.
[ValuesAndExpressions::ProhibitMagicNumbers]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = 10

# Individual and ranges of values to allow, and/or "all_integers".
# allowed_values = 0 1 2

# Kind of literals to allow.
# Valid values: Binary, Exp, Float, Hex, Octal.
# allowed_types = Float


# Don't mix numeric operators with string operands, or vice-versa.
[ValuesAndExpressions::ProhibitMismatchedOperators]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 3
severity                           = 2
# maximum_violations_per_document    = no_limit


# Write ` !$foo && $bar || $baz ' instead of ` not $foo && $bar or $baz'.
[ValuesAndExpressions::ProhibitMixedBooleanOperators]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Use `q{}' or `qq{}' instead of quotes for awkward-looking strings.
[ValuesAndExpressions::ProhibitNoisyQuotes]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Don't use quotes (`'', `"', ``') as delimiters for the quote-like operators.
[ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The operators to allow single-quotes as delimiters for.
# Valid values: m, q, qq, qr, qw, qx, s, tr, y.
# single_quote_allowed_operators = m s qr qx

# The operators to allow double-quotes as delimiters for.
# Valid values: m, q, qq, qr, qw, qx, s, tr, y.
# double_quote_allowed_operators = 

# The operators to allow back-quotes (back-ticks) as delimiters for.
# Valid values: m, q, qq, qr, qw, qx, s, tr, y.
# back_quote_allowed_operators = 


# Don't use strings like `v1.4' or `1.4.5' when including other modules.
[ValuesAndExpressions::ProhibitVersionStrings]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


[-ValuesAndExpressions::RequireConstantVersion]


# Warns that you might have used single quotes when you really wanted double-quotes.
[-ValuesAndExpressions::RequireInterpolationOfMetachars]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 1
# maximum_violations_per_document    = no_limit

# RCS keywords to ignore in potential interpolation.
# rcs_keywords = 


# Write ` 141_234_397.0145 ' instead of ` 141234397.0145 '.
[-ValuesAndExpressions::RequireNumberSeparators]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit

# The minimum absolute value to require separators in.
# Minimum value 10. No maximum.
# min_value = 10_000


# Write ` print <<'THE_END' ' or ` print <<"THE_END" '.
[ValuesAndExpressions::RequireQuotedHeredocTerminator]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
severity                           = 4
# maximum_violations_per_document    = no_limit


# Write ` <<'THE_END'; ' instead of ` <<'theEnd'; '.
[ValuesAndExpressions::RequireUpperCaseHeredocTerminator]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
severity                           = 4
# maximum_violations_per_document    = no_limit


# Do not write ` my $foo = $bar if $baz; '.
[Variables::ProhibitConditionalDeclarations]
# set_themes                         = bugs core
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# Use `my' instead of `local', except when you have to.
[Variables::ProhibitLocalVars]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Avoid `$`', `$&', `$'' and their English equivalents.
[Variables::ProhibitMatchVars]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Eliminate globals declared with `our' or `use vars'.
[-Variables::ProhibitPackageVars]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit

# The base set of packages to allow variables for.
# packages = File::Find Data::Dumper

# The set of packages to allow variables for, in addition to those given in "packages".
# add_packages = 
add_packages = Exporter


# Use double colon (::) to separate package name components instead of single quotes (').
[Variables::ProhibitPerl4PackageNames]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit


# Write `$EVAL_ERROR' instead of `$@'.
[-Variables::ProhibitPunctuationVars]
# set_themes                         = core cosmetic pbp
# add_themes                         =
# severity                           = 2
# maximum_violations_per_document    = no_limit

# The additional variables to allow.
# Values that are always included: $1, $2, $3, $4, $5, $6, $7, $8, $9, $_, @_, _.
# allow = 


# Don't ask for storage you don't need.
[Variables::ProhibitUnusedVariables]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Prevent access to private vars in other packages.
[Variables::ProtectPrivateVars]
# set_themes                         = core maintenance
# add_themes                         =
# severity                           = 3
# maximum_violations_per_document    = no_limit


# Write `local $foo = $bar;' instead of just `local $foo;'.
[-Variables::RequireInitializationForLocalVars]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 3
severity                           = 5
# maximum_violations_per_document    = no_limit


# Write `for my $element (@list) {...}' instead of `for $element (@list) {...}'.
[Variables::RequireLexicalLoopIterators]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 5
# maximum_violations_per_document    = no_limit


# Magic variables should be assigned as "local".
[Variables::RequireLocalizedPunctuationVars]
# set_themes                         = bugs core pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit


# Negative array index should be used.
[Variables::RequireNegativeIndices]
# set_themes                         = core maintenance pbp
# add_themes                         =
# severity                           = 4
# maximum_violations_per_document    = no_limit