ack is a tool like grep, designed for
programmers with large trees of
heterogeneous source code.

Basically it is similar to grep in that it searches files for patterns, but with a few key differences. Namely, it searches recursively and ignores version control and backup files by default (e.g. CVS, .svn, foo~, #foo#). And since it is built with Perl it is cross-platform. It also allows you to specify particular file types within a directory to search, so if you only want to search Perl files you could type

ack --perl pattern

If interested there is a list of the "top 10 reasons to use ack instead of grep" on the ack homepage. Plus, there is a Vim plugin.

There is another tool similar to Ack, called The Silver Searcher. The developer claims that it "is like ack, but better. It’s fast. It’s damn fast. The only thing faster is stuff that builds indicies beforehand, like Exuberant Ctags."