$ cat test.pl use 5.20.0; use warnings; use Text::CSV_XS "csv"; csv (in => "test.csv", blank_is_undef => 1, on_in => sub { splice @{$_[1]}, 2, 2, $_[1][2] // $_[1][3]; }); $ cat test.csv 1,2,,,5,6 1,2,3,,5,6 1,2,,4,5,6 1,2,3,4,5,6 $ perl test.pl 1,2,,5,6 1,2,3,5,6 1,2,4,5,6 1,2,3,5,6 #### $ cat test.pl use 5.20.0; use warnings; use Text::CSV_XS "csv"; csv (quote_always => 1, in => csv (in => "test.csv", blank_is_undef => 1, on_in => sub { splice @{$_[1]}, 2, 2, $_[1][2] // $_[1][3]; })); $ perl test.pl "1","2",,"5","6" "1","2","3","5","6" "1","2","4","5","6" "1","2","3","5","6" #### $ perl -MText::CSV_XS=csv -e'csv (in => "test.csv", blank_is_undef => 1, quote_always => 1, on_in => sub { splice @{$_[1]}, 2, 2, $_[1][2] // $_[1][3]; });' "1","2",,"5","6" "1","2","3","5","6" "1","2","4","5","6" "1","2","3","5","6"