$ cat pm_1208339_1.csv
A,B,C
D,E,F
G,H,I
A,D,G
$ cat pm_1208339_2.csv
B,C,D
X,Y,X
I,J,K
####
#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
use Text::CSV;
my ($f1, $f2) = qw{pm_1208339_1.csv pm_1208339_2.csv};
my %f1_values;
my $csv = Text::CSV::->new;
get_f1_data($f1, $csv, \%f1_values);
parse_f2_data($f2, $csv, \%f1_values);
sub get_f1_data {
my ($file, $csv_obj, $f1_values) = @_;
open my $fh, '<', $file;
while (my $row = $csv_obj->getline($fh) ) {
push @{$f1_values{$_}}, $row for @$row;
}
return;
}
sub parse_f2_data {
my ($file, $csv_obj, $f1_values) = @_;
open my $fh, '<', $file;
while (my $row = $csv_obj->getline($fh) ) {
my $matches = 0;
print 'In line: ';
$csv_obj->say(\*STDOUT, $row);
for my $value (@$row) {
next unless exists $f1_values->{$value};
++$matches;
print " $value found in:\n";
for my $line (@{$f1_values->{$value}}) {
print ' ';
$csv_obj->say(\*STDOUT, $line);
}
}
print " No matches found\n" unless $matches;
}
return;
}
####
In line: B,C,D
B found in:
A,B,C
C found in:
A,B,C
D found in:
D,E,F
A,D,G
In line: X,Y,X
No matches found
In line: I,J,K
I found in:
G,H,I