use File::Find::Rule; my $rule = File::Find::Rule->new; $rule->any( $rule->new ->directory ->name('winnt') ->prune ->discard, $rule->new ); while ( my $file = $rule->match ) { .. }