find({ wanted => \&foo, preprocess => sub { grep !/^d/i, @_ }, }, '/somedir'); #### use File::Find::Rule; my $seen = 1; my @files = find( file => exec => sub { $seen = 0 if /^d/i; $seen }, in => '/somedir' ); #### my @files; my $rule = rule(file => start => '/somedir'); while(my $file = $rule->match) { last if $file =~ /^d/i; push @files => $file; }