Careful.. you do not test for symlinks. Do an
ln -s . snaretrap and watch the code recurse forever. That is another (and more important) reason to rely on
File::Find - it correctly treats all the gotchas that can come up when traversing directories.
Makeshifts last the longest.