Absolutely great module, five stars all around for the code itself. Four stars for the developer, though, who's yet to apply a three year old patch (it's been sitting on RT, ready and waiting) that adds the one missing feature I want!
I hate to give all 5's, but I love Params::Validate. It's become as common in the perl I write as 'use strict'. It provides enough flexibility to ensure that it won't ever get in your way (it handles both positional and non-positional arguments,) it's syntax is simple and intuitive, and I've rarely had a case that couldn't be expressed with it.
Excellent way to validate one's parameters. Very worthy of the namespace.
Lets one validate the type of ones parameters, lets you attach callbacks to verify the contents of said variables, lets you have positional _or_ named arguments, lets you have default values for things. Lets you do lots of things.