in reply to Matching two files

I would do it something like this:
my %f1; while (<FILE1>) { chomp; my @fields = split /\|/; my @col3 = split /\s+/, $fields[2]; $f1{lc $fields[0]} = [$col3[0], $col3[2]]; } while (<FILE2>) { chomp; my @fields = split /\s*\|\s*/; my $name = lc $fields[0]; print "line $.: Name $fields[0] "; if (exists $f1{$name}) { if ($fields[1] == $f1{$name}[0] && $fields[3] == $f1{$name}[1] ) { print "matched.\n"; } else { print "found but not matched.\n"; } } else { print "not found.\n"; } }
Which, in your case, would give output of:
line 1: Name David matched. line 2: Name harry found but not matched. line 3: Name harry found but not matched.
But I don't really know what you are trying to accomplish, or whether you want case insensitivity (remove the lc's if you don't).

Replies are listed 'Best First'.
A reply falls below the community's threshold of quality. You may see it by logging in.