#!\perl\bin\perl use strict; use warnings; my $files = "C:/Directory"; my $list = "C:/Test.sdf"; open my $name, '<', $list or die "Failed to open file: $!\n"; my @files = $files; opendir(OUTPUT, $files); @files = grep {$_ ne '.' and $_ ne '..'} readdir(OUTPUT); closedir(OUTPUT); my %wanted_files; while (<$name>) { if ($_ =~ /^\s*fullpath=.*[\\\/](\w+\.nfo)"/) { $wanted_files{$1} = 1; } } foreach my $target_file (@files) { if (not $wanted_files{$target_file}) { unlink($files . "/" . $target_file) or die $!; } }