I'm looking for pointers from anyone who's been using perl for a while on how to do a recursive text search through a massive directory using perl and when searching for a regex, not a simple string (since grep -lR can just do that). Ideally it should be perl, since once it's effective enough at locating the files I'm looking for, I'll add functions which make it do something to the results. Which functions would you use for this?

Before I decided to try perl , I had a oneliner which I use for searching through (website) files, written in bash and awk. The first search is basically just a grep -lR which searches for a regex of things I'm looking for. The second search is basically a grep -R on it and shows the contents of the file too. The problem is, every time I add another set line to the giantic regex, awk becomes an order of magnitude slower at processing it. Perl is powerful when it comes to this kind of task when done correctly, but I work in awk/bash/java and the like, and have barely begun learning perl.

For the curious:
Code:
BAK=$IFS; IFS=$(echo -en "\n\b"); for i in `find . -type f -regex "regex for file types I want to search"`; do echo "$i :: `awk 'ten page regex goes here for what I'm looking for' "$i" | head -1`"; done | awk -F '::' '$2 !~ /^ *$/ {print $1}'; for i in `find . -type f -name "second set of file types I want to search"`; do echo "$i :: `awk 'another gigantic regex of what I want to look for`"; done | awk -F '::' '$2 !~ /^ *$/ {print $0}';  IFS=$BAK