From: Dobrica Pavlinusic Date: Fri, 8 Dec 2023 18:32:04 +0000 (+0100) Subject: create file using Text::CSV X-Git-Url: http://git.rot13.org/?a=commitdiff_plain;h=e769bdcf6709debdec6ac4cb210a7d41b29b156a;p=csv-join-similarity create file using Text::CSV --- diff --git a/upari.pl b/upari.pl index 7841a51..dc8bead 100755 --- a/upari.pl +++ b/upari.pl @@ -302,32 +302,36 @@ store $merge_ids, $merge_file; my $out_file = 'merged.csv'; print "out_file $out_file"; -open(my $out_fh, '>', $out_file); + +my $csv = Text::CSV->new ({ binary => 1, auto_diag => 1 }); + +open( my $out_fh, ">:encoding(utf8)", $out_file ) or die "$out_file: $!"; + +my $all_headers; foreach my $val ( 1 .. 4 ) { - print $out_fh join(',', map { unac_string('utf-8',$_) . '_' . $val } @{ $data_headers[$val] }); - print $out_fh ','; + push @$all_headers, map { unac_string('utf-8',$_) . '_' . $val } @{ $data_headers[$val] }; } -print $out_fh "broj_valova"; -print $out_fh "\n"; +push @$all_headers, "broj_valova"; +$csv->say($out_fh, $all_headers); foreach my $key ( sort keys %$data ) { print " $key"; foreach my $id ( sort keys %{ $data->{$key} } ) { - #print $out_fh "## $id ## "; my $broj_valova = 0; + my $row; + foreach my $val ( 1 .. 4 ) { if ( my $id_data = $data->{$key}->{$id}->{$val} ) { - print $out_fh join(',', map { m/,/ ? qq{"$_"} : $_ } @$id_data); + push @$row, @$id_data; $broj_valova++; } else { - print $out_fh ( ',' x $#{ $data_headers[$val] } ) ; # FIXME +1? + push @$row, undef foreach ( 0 .. $#{ $data_headers[$val] } ); } - print $out_fh ','; } - print $out_fh $broj_valova; - print $out_fh "\n"; + push @$row, $broj_valova; + $csv->say($out_fh, $row); } } close $out_fh;