in reply to validating sub arguments
Don't forget Params::Validate (which I'm only familiar with because Mason uses it; which I guess is somewhat of an endorsement :)