use File::Find;
my @dirlist;
sub wanted {
return unless -d $_;
push(@dirlist, $File::Find::name);
}
find(\&wanted, shift(@ARGV));
# Use @dirlist here
####
use File::Find;
sub dirs_only {
my ($array_ref) = @_;
return sub {
return unless -d $_;
push(@$array_ref, $File::Find::name);
};
}
{
# Not a global.
my @dirlist;
find(dirs_only(\@dirlist), shift(@ARGV));
# Use @dirlist here
}
####
use File::Find;
sub find_dirs {
my @dirlist;
find(sub {
return unless -d $_;
push(@dirlist, $File::Find::name);
}, @_);
return @dirlist;
}
{
# Not a global.
my @dirlist = find_dirs(shift(@ARGV));
# Use @dirlist here
}
####
use File::Find;
sub wanted {
return unless -d $_;
push(@File::Find::matches, $File::Find::name);
}
sub find_it {
local *File::Find::matches;
find(@_);
return @File::Find::matches;
}
{
# Not a global.
my @dirlist = find_it(\&wanted, shift(@ARGV));
# Use @dirlist here
}