use strict; use Tie::File; # read first file open my $fh, '<', 'FILE1' or die "can't open FILE1\n"; chomp(my @file1 = <$fh>); close $fh; # remove from second file tie my @file2, 'Tie::File', 'FILE2' or die "can't open FILE2\n"; foreach my $x (@file1) { @file2 = grep {!/^$x$/} @file2; } untie @file2;