in reply to KISS vs Feature set

First off, I agree with the first sentence of your last paragraph. And it wouldn't hurt to provide multiple WTDI in the module itself if you forsee them useful to a large segment of your users (if you have a pretty good idea lots of people want it, and it "fits" within your module's domain, then you're tactically circumventing a lot of reinvented wheels).

What I *would* suggest for your specific module, is to make the simplest case the default one. You're mimicking command line calls, so it's best to not "expect too much" from your implementations. So, IMHO, fgrep gets to return the array of matches, fgrep_hashref gets to return the AoH with the extra meta information.