Well, I also think it's a wheel in need of some re-invention. That's why I'm (in my CFT) reinventing it myself, though I'm aimed in a somewhat different way.
On the POD, it would be nice to say a little more inline with the example in the SYNOPSIS section about what each block is doing. They're reasonably guessable, and hopping back and forth with the long description is good for checking the guesses, but it's documentation; the goal is to not have to guess :)
On the code (or rather the API), one thing I do with my own replacement is to make use of passing args in pairs that can unroll into a hash, in pseudo-named-args fashion. That makes it more readable when you have more than 2 args, and also gives the user more flexibility in arranging things. It also means you can make things explicit instead of implicit (like :flags:, at a glance; I could be wrong about how it works, though).
I can't say I've looked at it terribly in depth; just glanced at the docs and examples. It superficially seems a reasonable tack to take in solving the problems you're aiming at.