use File::Find::Rule; my $ext = "html|php"; my $dirs = "(?:cgi-bin|log)"; my $base = "c:/blub"; my @files = find(not => rule( directory => name => qr/^$dirs/ => prune => ), file => name => qr/\.(?:$ext)\z/, in => $base);