column1,column2,column3,column4,column5,column6 datar1c1,datar1c2,datar1c3,datar1c4,datar1c5,datar1c6 datar2c1,"data,r2c2",datar2c3,datar2c4,datar2c5,datar2c6 datar3c1,datar3c2,"data, r3c3",datar3c4,datar3c5,datar3c6 #### column2,column1,column4,column3 datar1c2,datar1c1,datar1c4,datar1c3 datar2c2,datar2c1,datar2c4,datar2c3 datar3c2,datar3c1,datar3c4,"data, r3c3" #### #!/usr/bin/perl use strict ; use warnings ; use Text::CSV ; use Getopt::Long qw(GetOptions) ; my $inputFile = '' ; my $outputFile = '' ; my $csv = Text::CSV->new (); GetOptions( 'file:s' => \$inputFile, 'out:s' => \$outputFile, ) or die("Error in command line arguments\n") ; open(my $data, '<:encoding(utf8)', $inputFile) or die "Could not open '$inputFile' \n" ; open(my $out, '>:encoding(utf8)', $outputFile) or die "Could not open '$outputFile' \n" ; while (my $fields = $csv->getline( $data )) { splice @$fields, 4, 2 ; $csv->print($out, $fields) ; print $out "\n" ; } close $data ; close $out ;