in reply to 2 files

Hi,

(Note I am using Inline::Files here to provide this demo script with CSV files. In real life, replace "\*FILE1" and "\*FILE2" with the real file names.)
use v5.014; use Text::CSV_XS 'csv'; my $re = qr/ \A first (?:\s|\.) last \( (G[0-9]+) \) \Z /x; my %hash = map { ($_->[3] =~ s/$re/$1/r) => 1 } @{ csv( in => \*FILE1, headers => 'skip' ), }; my @result = map { $_->[0] } @{ csv( in => \*FILE2, headers => 'skip', filter => { 1 => sub { $_ =~ s/$re/$1/ and not exists $hash{$_} }, }), }; say "found $_ " for @result; use Inline::Files; __FILE1__ "A","B","C","D","E" "blah","blah","blah","first last(G123456)","blah" "blah","blah","blah","first last(G123457)","blah" "blah","blah","blah","first last(G123459)","blah" __FILE2__ "A","B","C","D" "first.last(G123456)","blah","blah","blah" "first.last(G123457)","blah","blah","blah" "first.last(G123458)","blah","blah","blah" "first.last(G123459)","blah","blah","blah"
Output:
$ perl 1226797.pl found G123458

Hope this helps!


The way forward always starts with a minimal test.