use Tie::File; my %seen; tie my @file1, 'Tie::File', 'file1' or die; tie my @file2, 'Tie::File', 'file2' or die; foreach (@file2) { chomp; $seen{$_}++; } @file1 = grep { chomp; !$seen{$_} } @file1; untie(@file1); untie(@file2);