Params::Validate::Dependencies
Params::Validate is a very useful module, which lets you easily enforce rules such as "the 'foo' parameter to the 'bar' subroutine should be an arrayref". It also has some very basic support for dependencies - eg, that the 'baz' parameter must always be used in conjunction with the 'bar' parameter.
But for a problem I had, it didn't go far enough. So I've extended it. Params::Validate::Dependencies (Github link; not yet on the CPAN) extends the validate() method to add support for things like "must have exactly one of 'alpha', 'beta' or 'gamma', or both of 'foo' and bar'".
I would appreciate if some kind person could take a look over the code and tests and tell me if they're any good, and also let me know if the documentation makes sense.
Thanks I will take a look.
Is this something on the lines of Moose::Role for non Moose packages?
Nice. I submitted a patch to P::V a few years back to add mutually exclusive parameters (see bug 5701) but it wasn't accepted; would you be able to incorporate some of those ideas in your work?
I've uploaded it to the CPAN. It already supports mutually exclusive parameters, via the one_of function.
The four functions it makes available map to Boolean logical ops thus:
none_of: NOT / NOR
one_of: XOR
any_of: OR
all_of: AND