severity = 1
##############################################################################
# Der Parameter 'severity' in dieser Datei legt fest ab welchem 'severity'-  #
# Aufruf die Regel zur Anwendung kommt.                                      #
# Bei Aufruf mit '-severity=3' werden alle Regeln mit 3, 4 und 5 ausgefhrt. #
# -------------------------------------------------------------------------- #
# severity :  1  -->  'brutal'  -->  $SEVERITY_LOWEST    |   PROJEKT         #
#             2  -->  'cruel'   -->  $SEVERITY_LOW       |                   #
#             3  -->  'harsh'   -->  $SEVERITY_MEDIUM    |   SCRIPT          #
#             4  -->  'stern'   -->  $SEVERITY_HIGH      |                   #
#             5  -->  'gentle'  -->  $SEVERITY_HIGHEST   |   SCHNELLSCHUSS   #
##############################################################################

  verbose = %p:%l:%c:%m\n

# |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| #
# || CORE - Policies                                                      || #
# |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| #

# -------------------------------------------------------------------------- #
# | BuiltinFunctions                                                       | #
# -------------------------------------------------------------------------- #

  [BuiltinFunctions::ProhibitBooleanGrep]
  severity           = 4
  [BuiltinFunctions::ProhibitComplexMappings]
  severity           = 4
  max_statements     = 1
  [BuiltinFunctions::ProhibitLvalueSubstr]
  severity           = 3
  [BuiltinFunctions::ProhibitReverseSortBlock]
  severity           = 3
  [BuiltinFunctions::ProhibitSleepViaSelect]
  severity           = 5
  [BuiltinFunctions::ProhibitStringyEval]
  severity           = 5
  allow_includes     = 0
  [BuiltinFunctions::ProhibitStringySplit]
  severity           = 3
  [BuiltinFunctions::ProhibitUniversalCan]
  severity           = 2
  [BuiltinFunctions::ProhibitUniversalIsa]
  severity           = 2
  [BuiltinFunctions::ProhibitVoidGrep]
  severity           = 2
  [BuiltinFunctions::ProhibitVoidMap]
  severity           = 2
  [BuiltinFunctions::RequireBlockGrep]
  severity           = 5
  [BuiltinFunctions::RequireBlockMap]
  severity           = 5
  [BuiltinFunctions::RequireGlobFunction]
  severity           = 5
  [BuiltinFunctions::RequireSimpleSortBlock]
  severity           = 4

# -------------------------------------------------------------------------- #
# | ClassHierarchies                                                       | #
# -------------------------------------------------------------------------- #

  [ClassHierarchies::ProhibitAutoloading]
  severity           = 3
  [ClassHierarchies::ProhibitExplicitISA]
  severity           = 3
  [ClassHierarchies::ProhibitOneArgBless]
  severity           = 5

# -------------------------------------------------------------------------- #
# | CodeLayout                                                             | #
# -------------------------------------------------------------------------- #

  [CodeLayout::ProhibitHardTabs]
  severity           = 2
  allow_leading_tabs = 0
  [CodeLayout::ProhibitParensWithBuiltins]
  severity           = 3
  [CodeLayout::ProhibitQuotedWordLists]
  severity           = 2
  min_elements       = 2
  strict             = 1
  [CodeLayout::ProhibitTrailingWhitespace]
  severity           = 2
  [CodeLayout::RequireConsistentNewlines]
  severity           = 5
  [-CodeLayout::RequireTidyCode]
  perltidyrc    = C:\Software\ActiveState\Perl_5.20.2_64\bin\.perltidyrc
  severity           = 3
  [CodeLayout::RequireTrailingCommas]
  severity           = 3

# -------------------------------------------------------------------------- #
# | ControlStructures                                                      | #
# -------------------------------------------------------------------------- #

  [ControlStructures::ProhibitCascadingIfElse]
  severity           = 4
  max_elsif          = 3
  [ControlStructures::ProhibitCStyleForLoops]
  severity           = 3
  [ControlStructures::ProhibitDeepNests]
  severity           = 4
  max_nests          = 4
  [ControlStructures::ProhibitLabelsWithSpecialBlockNames]
  severity           = 5
  [ControlStructures::ProhibitMutatingListFunctions]
  severity           = 5
  [ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions]
  severity           = 2
  [ControlStructures::ProhibitPostfixControls]
  severity           = 3
  allow              = if
  [ControlStructures::ProhibitUnlessBlocks]
  severity           = 3
  [ControlStructures::ProhibitUnreachableCode]
  severity           = 5
  [ControlStructures::ProhibitUntilBlocks]
  severity           = 3

# -------------------------------------------------------------------------- #
# | Documentation                                                          | #
# -------------------------------------------------------------------------- #

  [Documentation::PodSpelling]
  severity           = 3
  [Documentation::RequirePackageMatchesPodName]
  severity           = 2
  [Documentation::RequirePodAtEnd]
  severity           = 3
  [-Documentation::RequirePodSections]
  severity           = 3
  lib_sections       = NAME|VERSION|AUFRUF|METHODEN|ABHAENGIGKEITEN|AUTOR
  script_sections    = NAME|VERSION|AUFGABE|ANWENDUNG|OPTIONEN|AUTOR

# -------------------------------------------------------------------------- #
# | ErrorHandling                                                          | #
# -------------------------------------------------------------------------- #

  [ErrorHandling::RequireCarping]
  severity           = 3
  [ErrorHandling::RequireCheckingReturnValueOfEval]
  severity           = 5

# -------------------------------------------------------------------------- #
# | InputOutput                                                            | #
# -------------------------------------------------------------------------- #

  [InputOutput::ProhibitBacktickOperators]
  severity           = 2
  [InputOutput::ProhibitBarewordFileHandles]
  severity           = 5
  [InputOutput::ProhibitExplicitStdin]
  severity           = 3
  [InputOutput::ProhibitInteractiveTest]
  severity           = 5
  [InputOutput::ProhibitJoinedReadline]
  severity           = 4
  [InputOutput::ProhibitOneArgSelect]
  severity           = 5
  [InputOutput::ProhibitReadlineInForLoop]
  severity           = 5
  [InputOutput::ProhibitTwoArgOpen]
  severity           = 5
  [InputOutput::RequireBracedFileHandleWithPrint]
  severity           = 3
  [InputOutput::RequireBriefOpen]
  severity           = 3
  lines              = 20
  [InputOutput::RequireCheckedClose]
  severity           = 2
  [InputOutput::RequireCheckedOpen]
  severity           = 2
  [InputOutput::RequireCheckedSyscalls]
  severity           = 2
  functions          = :defaults opendir read readline readdir closedir
  exclude_functions  = print

# -------------------------------------------------------------------------- #
# | Miscellanea                                                            | #
# -------------------------------------------------------------------------- #

  [Miscellanea::ProhibitFormats]
  severity           = 3
  [Miscellanea::ProhibitTies]
  severity           = 3
  [Miscellanea::ProhibitUnrestrictedNoCritic]
  severity           = 2
  [Miscellanea::ProhibitUselessNoCritic]
  severity           = 2

# -------------------------------------------------------------------------- #
# | Modules                                                                | #
# -------------------------------------------------------------------------- #

  [Modules::ProhibitAutomaticExportation]
  severity           = 5
  [Modules::ProhibitEvilModules]
  severity           = 5
  modules            = /Acme::/ /Kwiki::/ XSLoader
  [Modules::ProhibitExcessMainComplexity]
  severity           = 4
  max_mccabe         = 15
  [Modules::ProhibitMultiplePackages]
  severity           = 5
  [Modules::RequireBarewordIncludes]
  severity           = 4
  [Modules::RequireEndWithOne]
  severity           = 5
  [Modules::RequireExplicitPackage]
  severity           = 5
  exempt_scripts     = 1
  [Modules::RequireFilenameMatchesPackage]
  severity           = 5
  [Modules::RequireNoMatchVarsWithUseEnglish]
  severity           = 4
  [Modules::RequireVersionVar]
  severity           = 3
  add_themes         = cosmetic

# -------------------------------------------------------------------------- #
# | NamingConventions                                                      | #
# -------------------------------------------------------------------------- #

  [-NamingConventions::Capitalization]
  severity           = 3
  [NamingConventions::ProhibitAmbiguousNames]
  severity           = 3
  forbid             = last set left right no second close

# -------------------------------------------------------------------------- #
# | References                                                             | #
# -------------------------------------------------------------------------- #

  [References::ProhibitDoubleSigils]
  severity           = 3

# -------------------------------------------------------------------------- #
# | RegularExpressions                                                     | #
# -------------------------------------------------------------------------- #

  [RegularExpressions::ProhibitCaptureWithoutTest]
  severity           = 3
  [RegularExpressions::ProhibitComplexRegexes]
  severity           = 3
  max_characters     = 30
  [-RegularExpressions::ProhibitEnumeratedClasses]
  [RegularExpressions::ProhibitEscapedMetacharacters]
  severity           = 3
  [RegularExpressions::ProhibitFixedStringMatches]
  severity           = 4
  [RegularExpressions::ProhibitSingleCharAlternation]
  severity           = 4
  [RegularExpressions::ProhibitUnusedCapture]
  severity           = 3
  [RegularExpressions::ProhibitUnusualDelimiters]
  severity           = 3
  [RegularExpressions::RequireBracesForMultiline]
  severity           = 3
  [RegularExpressions::RequireDotMatchAnything]
  severity           = 3
  [RegularExpressions::RequireExtendedFormatting]
  severity           = 3
  minimum_regex_length_to_complain_about = 15
  [RegularExpressions::RequireLineBoundaryMatching]
  severity           = 3

# -------------------------------------------------------------------------- #
# | Subroutines                                                            | #
# -------------------------------------------------------------------------- #

  [Subroutines::ProhibitAmpersandSigils]
  severity           = 3
  [-Subroutines::ProhibitBuiltinHomonyms]
  severity           = 5
  [Subroutines::ProhibitExcessComplexity]
  severity           = 4
  max_mccabe         = 50
  [Subroutines::ProhibitExplicitReturnUndef]
  severity           = 5
  [Subroutines::ProhibitManyArgs]
  severity           = 3
  max_arguments      = 4
  [Subroutines::ProhibitNestedSubs]
  severity           = 5
  [Subroutines::ProhibitReturnSort]
  severity           = 5
  [Subroutines::ProhibitSubroutinePrototypes]
  severity           = 5
  [Subroutines::ProtectPrivateSubs]
  severity           = 2
  [Subroutines::RequireArgUnpacking]
  severity           = 3
  short_subroutine_statements = 5
  [Subroutines::RequireFinalReturn]
  severity           = 5

# -------------------------------------------------------------------------- #
# | TestingAndDebugging                                                    | #
# -------------------------------------------------------------------------- #

  [TestingAndDebugging::ProhibitNoStrict]
  severity           = 5
  allow              = refs
  [TestingAndDebugging::ProhibitNoWarnings]
  severity           = 5
  allow              = uninitialized once
  [TestingAndDebugging::ProhibitProlongedStrictureOverride]
  severity           = 5
  statements         = 4
  [TestingAndDebugging::RequireTestLabels]
  severity           = 2
  [TestingAndDebugging::RequireUseStrict]
  severity           = 5
  [TestingAndDebugging::RequireUseWarnings]
  severity           = 5

# -------------------------------------------------------------------------- #
# | ValuesAndExpressions                                                   | #
# -------------------------------------------------------------------------- #

  [ValuesAndExpressions::ProhibitCommaSeparatedStatements]
  severity           = 5
  [ValuesAndExpressions::ProhibitConstantPragma]
  severity           = 5
  [ValuesAndExpressions::ProhibitEmptyQuotes]
  severity           = 3
  [ValuesAndExpressions::ProhibitEscapedCharacters]
  severity           = 3
  [ValuesAndExpressions::ProhibitImplicitNewlines]
  severity           = 3
  [ValuesAndExpressions::ProhibitInterpolationOfLiterals]
  severity           = 3
  [ValuesAndExpressions::ProhibitLeadingZeros]
  severity           = 5
  [ValuesAndExpressions::ProhibitLongChainsOfMethodCalls]
  severity           = 2
  max_chain_length   = 3
  [ValuesAndExpressions::ProhibitMagicNumbers]
  severity           = 2
  allowed_values     = all_integers
  allowed_types      = Hex
  [ValuesAndExpressions::ProhibitMismatchedOperators]
  severity           = 5
  [ValuesAndExpressions::ProhibitMixedBooleanOperators]
  severity           = 5
  [ValuesAndExpressions::ProhibitNoisyQuotes]
  severity           = 3
  [ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters]
  severity           = 2
  [ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator]
  severity           = 2
  [ValuesAndExpressions::ProhibitVersionStrings]
  severity           = 3
  [ValuesAndExpressions::RequireInterpolationOfMetachars]
  severity           = 3
  [ValuesAndExpressions::RequireNumberSeparators]
  severity           = 3
  min_value          = 10000
  [ValuesAndExpressions::RequireQuotedHeredocTerminator]
  severity           = 3
  [ValuesAndExpressions::RequireUpperCaseHeredocTerminator]
  severity           = 3


# -------------------------------------------------------------------------- #
# | Variables                                                              | #
# -------------------------------------------------------------------------- #

  [Variables::ProhibitConditionalDeclarations]
  severity           = 5
  [Variables::ProhibitLocalVars]
  severity           = 3
  [Variables::ProhibitMatchVars]
  severity           = 5
  [Variables::ProhibitPackageVars]
  severity           = 3
  packages           = File::Find Data::Dumper FindBin DBI
  add_packages       = File::Spec Module::CoreList
  [Variables::ProhibitPerl4PackageNames]
  severity           = 2
  [Variables::ProhibitPunctuationVars]
  severity           = 3
  allow              = $_ @_
  [Variables::ProhibitReusedNames]
  severity           = 5
  [Variables::ProhibitUnusedVariables]
  severity           = 2
  [Variables::ProtectPrivateVars]
  severity           = 2
  [Variables::RequireInitializationForLocalVars]
  severity           = 5
  [Variables::RequireLexicalLoopIterators]
  severity           = 5
  [Variables::RequireLocalizedPunctuationVars]
  severity           = 5
  [Variables::RequireNegativeIndices]
  severity           = 3

##############################################################################
[-Documentation::RequirePodLinksIncludeText]
