I find myself using File::Find more and more now that I've
got the hang of it. Typically you set up like so:
use File::Find;
find( \&do_stuff, $from_dir );
and
do_work() is the place where all the real
work gets done.
A couple caveats that I've found (the hard way...) about
what you can do inside do_work():
-
Don't change $_ inside do_work().
If you want to, save a copy on entry and change it back
before returning.
-
As Corion mentions, the working directory is changed to
each recursed directory under your starting point. If you
change directories inside do_work(), save a
copy of the current directory on entry and
chdir back to it before returning.
-
The usual file test operator caveats apply, for example
-f $File::Find::name and
-l $File::Find::name are both true if the file
is a symlink to another file. If you're interested in
symbolic links, test for those first, before you test for
file- or directory-ness.