If you're familiar with
Path::Class, I recommend for you to use Path::Class::Dir->recurse().
Create a Path::Class::Dir object as follows:
use Path::Class qw/dir/;
my $dir = dir( 'basedir' ); # platform-neutral syntax
Once you create the object, use recurse() method:
my @plain_files;
$dir->recurse(callback => sub {
my $file = shift; # Path::Class object
return if $file->is_dir;
push @plain_files, $file;
});
recurse() is similar to File::Find module.
If you use recurse(), you can handle Path::Class::File objects in the callback subroutine.
UPDATE: Corrected my typo ( recruse -> recurse ). Thanks to jdrago999.
In addition, I noticed $file may be a Path::Class::Dir object, and so simplified my comment in the code example ( "Path::Class::File object" -> "Path::Class object" ).