You do realize that ack's filetype detection is A) nothing at all related to MIME::Type, and B) entirely based on user-created rules, right? ack ships with sensible defaults, but they're still user-defined rules.

If it's File::Find that you are fighting with, then why not take a look at File::Next, which is the underlying file-finding engine that ack uses?

When I asked about use cases, I should have been more clear: Have you actually written code where you shell out to ack to get filenames? Or had it give you search results?
What did you do with the search results then?