#!/usr/bin/perl use strict; use warnings; use Text::CSV; my $file1 = <new(); my %masterlist; open my $f1In, "<", \$file1; <$f1In>; # Skip header row while (<$f1In>) { if ($csv->parse($_)) { my @columns = $csv->fields(); $masterlist{$columns[0]} = $columns[1]; } else { my $err = $csv->error_input; print "Failed to parse line $. in file1: $err"; } } close $f1In; open my $f2In, "<", \$file2; <$f2In>; # Skip header row while (<$f2In>) { if ($csv->parse($_)) { my @columns = $csv->fields(); $columns[1] = $masterlist{$columns[0]} if ! length $columns[1]; print join (',', @columns), "\n"; } else { my $err = $csv->error_input; print "Failed to parse line $. in file1: $err"; } } close $f1In; #### 1,a,1a 2,b,2b 3,c,3c