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;