#
# Global settings
#


# set the default severity to 1
severity = 1
# set the output format so that it shows the package that is generating the error
verbose = [%p] %m at %F line %l, column %c.  %e.  (Severity: %s)\n


#
# packages where we are setting custom options
#


# allow if and unless to be used in their postfix form
[ControlStructures::ProhibitPostfixControls]
allow = if unless


# allow the backtick opperator, but only when it's results are being read
[InputOutput::ProhibitBacktickOperators]
only_in_void_context = 1


# allow nesting to 4 levels
[ControlStructures::ProhibitDeepNests]
max_nests = 4


# allow the punctuation variable needed for 'good' slurping
[Variables::ProhibitPunctuationVars]
allow = $/

# make this check a little less insane :)
[InputOutput::RequireCheckedSyscalls]
functions = :builtins
exclude_functions = print say


#
# Exclude pakages that are not relevant for this module
#


# Excludes from levels 2-5
[-ControlStructures::ProhibitUnlessBlocks]
# I just disagree with Conway about what is 'expected behaviour' in REs
[-RegularExpressions::RequireLineBoundaryMatching]
[-ValuesAndExpressions::ProhibitMagicNumbers]


# Excludes from level 1
[-CodeLayout::RequireTidyCode]
# prohibiting white space is good in theory but the implementation messes up on completely blank lines
# makes Komodo edit impossible to use, so reluctantly excluding this one out.
[-CodeLayout::ProhibitTrailingWhitespace]


# Excludes from level 3
# I just disagree with Conway about the ease of reading if! and unless
[-ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions]
# not compatible with things like Type Libraries
[-Modules::ProhibitExcessMainComplexity]


#
# Customise POD requirements
#
[Documentation::RequirePodSections]
lib_sections    = NAME | VERSION | SYNOPSIS | DESCRIPTION | SUBROUTINES/METHODS | CONFIGURATION AND ENVIRONMENT | DEPENDENCIES | INCOMPATIBILITIES | BUGS AND LIMITATIONS | AUTHOR | LICENCE AND COPYRIGHT