This is the most difficult review I've written so far. Maybe because I really wanted this module to be exceptionally good. Most of the time when I give a bad review I feel quite sure but not this time. Go see for yourself. Try it if you dare and give us a counter-review.
This module documentation is just horrible. It gives me a bad headache. It starts by the synopsis that is frustratingly messy and continues with documentation that keeps exploding my head.
Few are the paragraphs where an unnecessary comment, an exception, or a special case, is not contained within parenthesis.
Going through the documentation three times feels like meeting Sultan Ibragimov in a back street of Makhachkala.
"Params::Clean lacks various advanced features" we are told to later tell us it has "semi-advanced features".
The examples are contrived to the point where the author himself tell us they are confusing but that's sake of demonstrating how things work. The examples are given with barewords which mean they don work with 'use strict'. The reason, we are told, is clarity.
The interface is not much better, it feel synthetic. Flags are counted [undef, 1, 2, ...] not [0, 1, 2, ...]
However I look at it, this module make me feel dizzy.
So what about the functionality? Frankly I don't know, it seems a lot of work went into the module and there are tests including the examples given in the documentation. But after my defeat against Sultan, I didn't feel like installing the module and get yet another pounding.