Now coming to a CPAN near you, File::Finder, a nice wrapper around
File::Find, with a much more find(1)-like syntax than File::Find::Rule,
which can be both a blessing and a curse. :)
>From the synopsis:
use File::Finder;
## simulate "-type f"
my $all_files = File::Finder->type('f');

## any rule can be extended:
my $all_files_printer = $all_files->print;

## traditional use: generating "wanted" subroutines:
use File::Find;
find($all_files_printer, @starting_points);

## or, we can gather up the results immediately:
my @results = $all_files->in(@starting_points);

## -depth and -follow are noted, but need a bit of help for find:
my $deep_dirs = File::Finder->depth->type('d')->ls->exec('rmdir','{}');
find($deep_dirs->as_options, @places);

A few other interesting examples from the manpage:

my $big_or_old = File::Finder
->type('f')
->left
->size("+100")->or->mtime("+90")
->right;
find($big_or_old->ls, "/tmp");


my $files = File::Finder->type('f');
# find files that are exactly mode 644
my $files_644 = $files->perm(0644);
# find files that are at least world executable:
my $files_world_exec = $files->perm("-1");
# find files that have some executable bit set:
my $files_exec = $files->perm("+0111");

my $blaster = File::Finder->atime("+30")->eval(sub { unlink });

my $old = File::Finder->atime("+30");
my $big = File::Finder->size("+100");
my $old_or_big = File::Finder->eval($old)->or->eval($big);
my $killer = File::Finder->eval(sub { unlink });
my $kill_old_or_big = File::Finder
->eval($old_or_big)->ls->eval($killer);
$kill_old_or_big->in('/tmp');

It's functional, but not tested completely. I have tests for the
mechanism, but not for the individual file tests (except ->eval).
I'm writing up an article for this module for The Perl Journal's
January 2004 issue, and feedback is welcome.

I believe the code is cleaner and faster and easier to extend than
File::Find::Rule. I'm not intending to slight Richard Clamp's work in
the slightest.... I just wanted to take a different approach to the
interface and engine and like the results.

print "Just another Perl hacker,"

--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!