use Text::CSV_XS; my ($csv, $fh); &main; sub main { my @row1 = ("aaa","fff","sss" ); my @row2 = ("bbb","fff","sss"); $csv = Text::CSV_XS->new ( { binary => 1 } ) # should set binary attribute. or die "Cannot use CSV: ".Text::CSV->error_diag (); open $fh, ">:encoding(utf8)", "new.csv" or die "new.csv: $!"; $csv->print ($fh, \@row1); $csv->print ($fh, \@row2); close $fh or die "new.csv: $!"; print " finished \n"; }