opendir DIR, $dir or die "Couldn't read '$dir' : $!"; my @all_files = map { lc $_ } readdir DIR; closedir DIR; my %did = map { /(.*)\.did$/ and ($1 => 1) } grep { /\.did$/ } @all_files; my @files = grep { /(.*)\.mrg$/ and not $did{$1} } @all_files;