Try
use strict;
use warnings;
use Text::CSV;
my @data; # 2D array for CSV data
my %dict=();
my $file = 'AMS.csv';
my $csv = Text::CSV->new({ binary => 1, quote_null => 0 });
open my $fh, '<', $file or die "Could not open $file: $!";
while( my $ar = $csv->getline( $fh ) ) {
if (@$ar > 2){
push @data,$ar;
} elsif (@$ar == 2) {
$dict{$ar->[0]} = $ar->[1];
}
}
open $fh, ">:encoding(utf8)", "PPS.csv" or die "PPS.csv: $!";
for my $ar (@data) {
$ar->[0] = $dict{$ar->[0]};
$ar->[-1] = $dict{$ar->[-1]};
$csv->print($fh, $ar);
print $fh "\n";
}
close $fh or die "PPS.csv: $!";
poj