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; #### ID alan135/xkr $work(b05bfn00un0c3)/b05bfn00un0c3 ; #<= b05bfn00un0d0 Size:5848.270996 ID sam012/pp $work(b05bfn00ld0p7)/b05bfn00ld0p7 ; #<= b05bfn00ld0s0 Size:INFINITY ID Steve9018 $work(b05bfn00ld0p7)/b05bfn00ld0p7 ; #<= b05bfn00ld0s0 Size:INFINITY