The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Globals
severity = 4
# force = 0
# only = 0
# profile-strictness = warn
# color = 0
# pager = 
# top = 0
# verbose = 4
# include = 
# exclude = 
# single-policy = 
# theme = 
# color-severity-highest = bold red
# color-severity-high = magenta
# color-severity-medium = 
# color-severity-low = 
# color-severity-lowest = 

# Use `List::MoreUtils::any' instead of `grep' in boolean context.
[BuiltinFunctions::ProhibitBooleanGrep]
severity                           = 2


# Map blocks should have a single statement.
[BuiltinFunctions::ProhibitComplexMappings]
severity                           = 3

# 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]
severity                           = 3


# Forbid $b before $a in sort blocks.
[BuiltinFunctions::ProhibitReverseSortBlock]
severity                           = 1


# Use Time::HiRes instead of something like `select(undef, undef, undef, .05)'.
[BuiltinFunctions::ProhibitSleepViaSelect]
severity                           = 5


# Write `eval { my $foo; bar($foo) }' instead of `eval "my $foo; bar($foo);"'.
[BuiltinFunctions::ProhibitStringyEval]
severity                           = 5

# Allow eval of "use" and "require" strings.
# allow_includes = 0


# Write `split /-/, $string' instead of `split '-', $string'.
[BuiltinFunctions::ProhibitStringySplit]
severity                           = 2


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


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


# Don't use `grep' in void contexts.
[BuiltinFunctions::ProhibitVoidGrep]
severity                           = 3


# Don't use `map' in void contexts.
[BuiltinFunctions::ProhibitVoidMap]
severity                           = 3


# Write `grep { $_ =~ /$pattern/ } @list' instead of `grep /$pattern/, @list'.
[BuiltinFunctions::RequireBlockGrep]
severity                           = 4


# Write `map { $_ =~ /$pattern/ } @list' instead of `map /$pattern/, @list'.
[BuiltinFunctions::RequireBlockMap]
severity                           = 4


# Use `glob q{*}' instead of <*>.
[BuiltinFunctions::RequireGlobFunction]
severity                           = 5


# Sort blocks should have a single statement.
[BuiltinFunctions::RequireSimpleSortBlock]
severity                           = 3


# AUTOLOAD methods should be avoided.
[ClassHierarchies::ProhibitAutoloading]
severity                           = 3


# Employ `use base' instead of `@ISA'.
[ClassHierarchies::ProhibitExplicitISA]
severity                           = 3


# Write `bless {}, $class;' instead of just `bless {};'.
[ClassHierarchies::ProhibitOneArgBless]
severity                           = 5


# Use spaces instead of tabs.
[CodeLayout::ProhibitHardTabs]
severity                           = 3

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


# Write `open $handle, $path' instead of `open($handle, $path)'.
[CodeLayout::ProhibitParensWithBuiltins]
severity                           = 1


# Write `qw(foo bar baz)' instead of `('foo', 'bar', 'baz')'.
[CodeLayout::ProhibitQuotedWordLists]
severity                           = 2

# 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]
severity                           = 1


# Use the same newline through the source.
[CodeLayout::RequireConsistentNewlines]
severity                           = 4


# Put a comma at the end of every multi-line list declaration, including the last one.
[CodeLayout::RequireTrailingCommas]
severity                           = 1


# Write `for(0..20)' instead of `for($i=0; $i<=20; $i++)'.
[ControlStructures::ProhibitCStyleForLoops]
severity                           = 2


# Don't write long "if-elsif-elsif-elsif-elsif...else" chains.
[ControlStructures::ProhibitCascadingIfElse]
severity                           = 3

# 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]
severity                           = 3

# 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]
severity                           = 4


# Don't modify `$_' in list functions.
[ControlStructures::ProhibitMutatingListFunctions]
severity                           = 5

# 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]
severity                           = 3


# Write `if($condition){ do_something() }' instead of `do_something() if $condition'.
[ControlStructures::ProhibitPostfixControls]
severity                           = 2

# 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]
severity                           = 2


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


# Write `while(! $condition)' instead of `until($condition)'.
[ControlStructures::ProhibitUntilBlocks]
severity                           = 2


# The `=head1 NAME' section should match the package.
[Documentation::RequirePackageMatchesPodName]
severity                           = 1


# All POD should be after `__END__'.
[Documentation::RequirePodAtEnd]
severity                           = 1


# Organize your POD into the customary sections.
[Documentation::RequirePodSections]
severity                           = 2

# 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

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


# Use functions from Carp instead of `warn' or `die'.
[ErrorHandling::RequireCarping]
severity                           = 3

# 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]
severity                           = 4


# Discourage stuff like `@files = `ls $directory`'.
[InputOutput::ProhibitBacktickOperators]
severity                           = 3

# 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]
severity                           = 5

# swapped < for &lt; to stop module-starter carping
# Use "<>" or "&lt;ARGV>" or a prompting module instead of "&lt;STDIN>".
[InputOutput::ProhibitExplicitStdin]
severity                           = 4


# Use prompt() instead of -t.
[InputOutput::ProhibitInteractiveTest]
severity                           = 5


# Use `local $/ = undef' or File::Slurp instead of joined readline.
[InputOutput::ProhibitJoinedReadline]
severity                           = 4


# Never write `select($fh)'.
[InputOutput::ProhibitOneArgSelect]
severity                           = 4


# Write `while( $line = <> ){...}' instead of `for(<>){...}'.
[InputOutput::ProhibitReadlineInForLoop]
severity                           = 5


# Write `open $fh, q{<}, $filename;' instead of `open $fh, "<$filename";'.
[InputOutput::ProhibitTwoArgOpen]
severity                           = 5


# Write `print {$FH} $foo, $bar;' instead of `print $FH $foo, $bar;'.
[InputOutput::RequireBracedFileHandleWithPrint]
severity                           = 1


# Close filehandles as soon as possible after opening them.
[InputOutput::RequireBriefOpen]
severity                           = 4

# The maximum number of lines between an open() and a close().
# Minimum value 1. No maximum.
# IJW: set to about a screen-length or so.
lines = 30


# Write `my $error = close $fh;' instead of `close $fh;'.
[InputOutput::RequireCheckedClose]
severity                           = 2


# Write `my $error = open $fh, $mode, $filename;' instead of `open $fh, $mode, $filename;'.
[InputOutput::RequireCheckedOpen]
severity                           = 4


# Return value of flagged function ignored.
[InputOutput::RequireCheckedSyscalls]
severity                           = 2

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

# The set of functions to not require checking the return value of.
# exclude_functions = 


# Do not use `format'.
[Miscellanea::ProhibitFormats]
severity                           = 3


# Do not use `tie'.
[Miscellanea::ProhibitTies]
severity                           = 2


# Forbid a bare `## no critic'
[Miscellanea::ProhibitUnrestrictedNoCritic]
severity                           = 3


# Remove ineffective "## no critic" annotations.
[Miscellanea::ProhibitUselessNoCritic]
severity                           = 2


# Put source-control keywords in every file.
[Miscellanea::RequireRcsKeywords]
severity                           = 2

# The keywords to require in all files.
# keywords = 


# Export symbols via `@EXPORT_OK' or `%EXPORT_TAGS' instead of `@EXPORT'.
[Modules::ProhibitAutomaticExportation]
severity                           = 4


# Minimize complexity in code that is outside of subroutines.
[Modules::ProhibitExcessMainComplexity]
severity                           = 3

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


# Put packages (especially subclasses) in separate files.
[Modules::ProhibitMultiplePackages]
severity                           = 4


# Write `require Module' instead of `require 'Module.pm''.
[Modules::RequireBarewordIncludes]
severity                           = 5


# End each module with an explicitly `1;' instead of some funky expression.
[Modules::RequireEndWithOne]
severity                           = 4


# Always make the `package' explicit.
[Modules::RequireExplicitPackage]
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]
severity                           = 5


# `use English' must be passed a `-no_match_vars' argument.
[Modules::RequireNoMatchVarsWithUseEnglish]
severity                           = 2


# Give every module a `$VERSION' number.
[Modules::RequireVersionVar]
severity                           = 2


# Distinguish different program components by case.
[NamingConventions::Capitalization]
severity                           = 3

# How package name components should be capitalized.  Valid values are :single_case, :all_lower, :all_upper:, :starts_with_lower, :starts_with_upper, :no_restriction, or a regex.
# packages = :starts_with_upper

# Package names that are exempt from capitalization rules.  The values here are regexes that will be surrounded by \A and \z.
# package_exemptions = main

# How subroutine names should be capitalized.  Valid values are :single_case, :all_lower, :all_upper, :starts_with_lower, :starts_with_upper, :no_restriction, or a regex.
# subroutines = :single_case

# Subroutine names that are exempt from capitalization rules.  The values here are regexes that will be surrounded by \A and \z.
# subroutine_exemptions = AUTOLOAD BUILD BUILDARGS CLEAR CLOSE DELETE DEMOLISH DESTROY EXISTS EXTEND FETCH FETCHSIZE FIRSTKEY GETC NEXTKEY POP PRINT PRINTF PUSH READ READLINE SCALAR SHIFT SPLICE STORE STORESIZE TIEARRAY TIEHANDLE TIEHASH TIESCALAR UNSHIFT UNTIE WRITE

# How local lexical variables names should be capitalized.  Valid values are :single_case, :all_lower, :all_upper, :starts_with_lower, :starts_with_upper, :no_restriction, or a regex.
# local_lexical_variables = :single_case

# Local lexical variable names that are exempt from capitalization rules.  The values here are regexes that will be surrounded by \A and \z.
# local_lexical_variable_exemptions = 

# How lexical variables that are scoped to a subset of subroutines, should be capitalized.  Valid values are :single_case, :all_lower, :all_upper, :starts_with_lower, :starts_with_upper, :no_restriction, or a regex.
# scoped_lexical_variables = :single_case

# Names for variables in anonymous blocks that are exempt from capitalization rules.  The values here are regexes that will be surrounded by \A and \z.
# scoped_lexical_variable_exemptions = 

# How lexical variables at the file level should be capitalized.  Valid values are :single_case, :all_lower, :all_upper, :starts_with_lower, :starts_with_upper, :no_restriction, or a regex.
# file_lexical_variables = :single_case

# File-scope lexical variable names that are exempt from capitalization rules.  The values here are regexes that will be surrounded by \A and \z.
# file_lexical_variable_exemptions = 

# How global (package) variables should be capitalized.  Valid values are :single_case, :all_lower, :all_upper, :starts_with_lower, :starts_with_upper, :no_restriction, or a regex.
# global_variables = :single_case

# Global variable names that are exempt from capitalization rules.  The values here are regexes that will be surrounded by \A and \z.
# global_variable_exemptions = \$VERSION @ISA @EXPORT(?:_OK)? %EXPORT_TAGS \$AUTOLOAD %ENV %SIG \$TODO

# How constant names should be capitalized.  Valid values are :single_case, :all_lower, :all_upper, :starts_with_lower, :starts_with_upper, :no_restriction, or a regex.
# constants = :all_upper

# Constant names that are exempt from capitalization rules.  The values here are regexes that will be surrounded by \A and \z.
# constant_exemptions = 

# How labels should be capitalized.  Valid values are :single_case, :all_lower, :all_upper, :starts_with_lower, :starts_with_upper, :no_restriction, or a regex.
# labels = :all_upper

# Labels that are exempt from capitalization rules.  The values here are regexes that will be surrounded by \A and \z.
# label_exemptions = 


# Don't use vague variable or subroutine names like 'last' or 'record'.
[NamingConventions::ProhibitAmbiguousNames]
severity                           = 3

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


# Write `@{ $array_ref }' instead of `@$array_ref'.
[References::ProhibitDoubleSigils]
severity                           = 2


# Capture variable used outside conditional.
[RegularExpressions::ProhibitCaptureWithoutTest]
severity                           = 3


# Use `eq' or hash instead of fixed-pattern regexps.
[RegularExpressions::ProhibitFixedStringMatches]
severity                           = 2


# Use only `//' or `{}' to delimit regexps.
[RegularExpressions::ProhibitUnusualDelimiters]
severity                           = 1

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


# Use `{' and `}' to delimit multi-line regexps.
[RegularExpressions::RequireBracesForMultiline]
severity                           = 1

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


# Always use the `/s' modifier with regular expressions.
[RegularExpressions::RequireDotMatchAnything]
severity                           = 2


# Always use the `/x' modifier with regular expressions.
[RegularExpressions::RequireExtendedFormatting]
severity                           = 3

# 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]
severity                           = 2


# Don't call functions with a leading ampersand sigil.
[Subroutines::ProhibitAmpersandSigils]
severity                           = 2


# Don't declare your own `open' function.
[Subroutines::ProhibitBuiltinHomonyms]
severity                           = 2


# Minimize complexity by factoring code into smaller subroutines.
[Subroutines::ProhibitExcessComplexity]
severity                           = 4

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


# Return failure with bare `return' instead of `return undef'.
[Subroutines::ProhibitExplicitReturnUndef]
severity                           = 2


# Too many arguments.
[Subroutines::ProhibitManyArgs]
severity                           = 3

# 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]
severity                           = 5


# Behavior of `sort' is not defined if called in scalar context.
[Subroutines::ProhibitReturnSort]
severity                           = 5


# Don't write `sub my_function (@@) {}'.
[Subroutines::ProhibitSubroutinePrototypes]
severity                           = 5


# Prevent access to private subs in other packages.
[Subroutines::ProtectPrivateSubs]
severity                           = 3

# Pattern that determines what a private subroutine is.
# private_name_regex = \b_\w+\b

# Subroutines matching the private name regex to allow under this policy.
# Values that are always included: POSIX::_PC_CHOWN_RESTRICTED, POSIX::_PC_LINK_MAX, POSIX::_PC_MAX_CANON, POSIX::_PC_MAX_INPUT, POSIX::_PC_NAME_MAX, POSIX::_PC_NO_TRUNC, POSIX::_PC_PATH_MAX, POSIX::_PC_PIPE_BUF, POSIX::_PC_VDISABLE, POSIX::_POSIX_ARG_MAX, POSIX::_POSIX_CHILD_MAX, POSIX::_POSIX_CHOWN_RESTRICTED, POSIX::_POSIX_JOB_CONTROL, POSIX::_POSIX_LINK_MAX, POSIX::_POSIX_MAX_CANON, POSIX::_POSIX_MAX_INPUT, POSIX::_POSIX_NAME_MAX, POSIX::_POSIX_NGROUPS_MAX, POSIX::_POSIX_NO_TRUNC, POSIX::_POSIX_OPEN_MAX, POSIX::_POSIX_PATH_MAX, POSIX::_POSIX_PIPE_BUF, POSIX::_POSIX_SAVED_IDS, POSIX::_POSIX_SSIZE_MAX, POSIX::_POSIX_STREAM_MAX, POSIX::_POSIX_TZNAME_MAX, POSIX::_POSIX_VDISABLE, POSIX::_POSIX_VERSION, POSIX::_SC_ARG_MAX, POSIX::_SC_CHILD_MAX, POSIX::_SC_CLK_TCK, POSIX::_SC_JOB_CONTROL, POSIX::_SC_NGROUPS_MAX, POSIX::_SC_OPEN_MAX, POSIX::_SC_PAGESIZE, POSIX::_SC_SAVED_IDS, POSIX::_SC_STREAM_MAX, POSIX::_SC_TZNAME_MAX, POSIX::_SC_VERSION, POSIX::_exit.
# allow = 


# Always unpack `@_' first.
[Subroutines::RequireArgUnpacking]
severity                           = 3

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

# Should unpacking from array slices and elements be allowed?.
# allow_subscripts = 0

# Allow the usual delegation idiom to these namespaces/subroutines.
# Values that are always included: NEXT::, SUPER::.
# allow_delegation_to = 


# End every path through a subroutine with an explicit `return' statement.
[Subroutines::RequireFinalReturn]
severity                           = 2

# 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]
severity                           = 5

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


# Prohibit various flavors of `no warnings'.
[TestingAndDebugging::ProhibitNoWarnings]
severity                           = 4

# 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]
severity                           = 4

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


# Tests should all have labels.
[TestingAndDebugging::RequireTestLabels]
severity                           = 3

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


# Always `use strict'.
[TestingAndDebugging::RequireUseStrict]
severity                           = 5
# maximum_violations_per_document    = 1

# The additional modules to treat as equivalent to "strict".
# Values that are always included: Moose, Moose::Role, Moose::Util::TypeConstraints, strict.
equivalent_modules = common::sense


# Always `use warnings'.
[TestingAndDebugging::RequireUseWarnings]
severity                           = 5
# maximum_violations_per_document    = 1

# The additional modules to treat as equivalent to "warnings".
# Values that are always included: Moose, Moose::Role, Moose::Util::TypeConstraints, warnings.
equivalent_modules = common::sense


# Don't use the comma operator as a statement separator.
[ValuesAndExpressions::ProhibitCommaSeparatedStatements]
severity                           = 4

# 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]
severity                           = 2


# Write `q{}' instead of `'''.
[ValuesAndExpressions::ProhibitEmptyQuotes]
severity                           = 2


# Write `"\N{DELETE}"' instead of `"\x7F"', etc.
[ValuesAndExpressions::ProhibitEscapedCharacters]
severity                           = 2


# Use concatenation or HEREDOCs instead of literal line breaks in strings.
[ValuesAndExpressions::ProhibitImplicitNewlines]
severity                           = 3


# Always use single quotes for literal strings.
[ValuesAndExpressions::ProhibitInterpolationOfLiterals]
severity                           = 1

# 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]
severity                           = 5

# 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]
severity                           = 2

# 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]
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

# Should anything to the right of a "=>" be allowed?.
# allow_to_the_right_of_a_fat_comma = 1


# Don't mix numeric operators with string operands, or vice-versa.
[ValuesAndExpressions::ProhibitMismatchedOperators]
severity                           = 3


# Write ` !$foo && $bar || $baz ' instead of ` not $foo && $bar or $baz'.
[ValuesAndExpressions::ProhibitMixedBooleanOperators]
severity                           = 4


# Use `q{}' or `qq{}' instead of quotes for awkward-looking strings.
[ValuesAndExpressions::ProhibitNoisyQuotes]
severity                           = 2


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

# 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 write ` print <<'__END__' '.
[ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator]
severity                           = 4


# Don't use strings like `v1.4' or `1.4.5' when including other modules.
[ValuesAndExpressions::ProhibitVersionStrings]
severity                           = 4


# Warns that you might have used single quotes when you really wanted double-quotes.
[ValuesAndExpressions::RequireInterpolationOfMetachars]
severity                           = 1

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


# Write ` 141_234_397.0145 ' instead of ` 141234397.0145 '.
[ValuesAndExpressions::RequireNumberSeparators]
severity                           = 2

# 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]
severity                           = 2


# Write ` <<'THE_END'; ' instead of ` <<'theEnd'; '.
[ValuesAndExpressions::RequireUpperCaseHeredocTerminator]
severity                           = 2


# Do not write ` my $foo = $bar if $baz; '.
[Variables::ProhibitConditionalDeclarations]
severity                           = 5


# Use `my' instead of `local', except when you have to.
[Variables::ProhibitLocalVars]
severity                           = 2


# Avoid `$`', `$&', `$'' and their English equivalents.
[Variables::ProhibitMatchVars]
severity                           = 4


# Eliminate globals declared with `our' or `use vars'.
[Variables::ProhibitPackageVars]
severity                           = 3

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

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


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


# Write `$EVAL_ERROR' instead of `$@'.
[Variables::ProhibitPunctuationVars]
severity                           = 1

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


# Do not reuse a variable name in a lexical scope
[Variables::ProhibitReusedNames]
severity                           = 3

# The variables to not consider as duplicates.
# allow = $self $class


# Don't ask for storage you don't need.
[Variables::ProhibitUnusedVariables]
severity                           = 3


# Prevent access to private vars in other packages.
[Variables::ProtectPrivateVars]
severity                           = 3


# Write `local $foo = $bar;' instead of just `local $foo;'.
[Variables::RequireInitializationForLocalVars]
severity                           = 3


# Write `for my $element (@list) {...}' instead of `for $element (@list) {...}'.
[Variables::RequireLexicalLoopIterators]
severity                           = 5


# Magic variables should be assigned as "local".
[Variables::RequireLocalizedPunctuationVars]
severity                           = 5

# Global variables to exclude from this policy.
# Values that are always included: $ARG, $_, @_.
allow = %ENV


# Negative array index should be used.
[Variables::RequireNegativeIndices]
severity                           = 4