1,Go,Manuel,V.,1/22/2015,8:30AM,5:30PM,1001 2,Calinisan,Peter,S.,1/22/2015,8:30AM,5:30PM,1002 3,Sioting,Michael,S.,1/22/2015,8:30AM,5:30PM,1003 1,2002 2,2001 3,2003 1001,IT 1002,HR 1003,PURCHASING #### 2002,Go,Manuel,V.,1/22/2015,8:30AM,5:30PM,IT 2001,Calinisan,Peter,S.,1/22/2015,8:30AM,5:30PM,HR 2003,Sioting,Michael,S.,1/22/2015,8:30AM,5:30PM,PURCHASING #### use strict; use warnings; use Text::CSV; use Data::Dump qw(dump); my @data; # 2D array for CSV data 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 $column = $csv->getline( $fh ) ) { #shift @$column; push @data, $column; } open $fh, ">:encoding(utf8)", "PPS.csv" or die "PPS.csv: $!"; for (@data) { $csv->print($fh, $_); print $fh "\n"; } close $fh or die "PPS.csv: $!";