What you will need is a good recursive File Finder.
You might want to poke at the source of File::Find.
Failing that, if you run a Super Search using find file you will get a whole whack of hits, some with bad recursive search methods. Some with better. Including some here. ;-)