Params::Check is a generic input parsing/checking mechanism. . It allows you to validate input via a template. The only requirement is that the arguments must be named. . Params::Check can do the following things for you: * Convert all keys to lowercase * Check if all required arguments have been provided * Set arguments that have not been provided to the default * Weed out arguments that are not supported and warn about them to the user * Validate the arguments given by the user based on strings, regexes, lists or even subroutines * Enforce type integrity if required