use Modern::Perl; open my $NAMES, '<', './file2.txt' or die 'Could not open file2.txt'; my %names; while (<$NAMES>) { chomp; next unless $_; $names{(split)[2]}=1; } close $NAMES; open my $DATA, '<', './file1.txt' or die 'Could not open file1.txt'; while (<$DATA>) { chomp; next unless $_; say unless $names{(split)[1]}; } close $DATA;