in reply to Perl: How to print unmatched data after comparison of two files?

The traditional way to do this is by putting the keys you have to check repeatedly in a hash-variable which is very fast to look-up, even when there are many items to look-up. Then you can read the other file line by line and check the keys.

Rather than using a regex to extract the keys, the following example uses split

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

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

My blog: Imperial Deltronics