X-Git-Url: http://git.rot13.org/?p=virtual-ldap;a=blobdiff_plain;f=bin%2Fcsv2yaml.pl;h=71d76ec85c0354dccc95dd4ff2277684166aad78;hp=bfe5702d7521a1a71f0010b333963e446ace379d;hb=c269c67603b2f593e0688e473fe8a1f675b33cd4;hpb=ef97426a63e52f9ea55b493ac44ece2bf9b96470;ds=inline diff --git a/bin/csv2yaml.pl b/bin/csv2yaml.pl index bfe5702..71d76ec 100755 --- a/bin/csv2yaml.pl +++ b/bin/csv2yaml.pl @@ -11,14 +11,14 @@ use Data::Dump qw/dump/; use File::Slurp; use YAML qw/DumpFile/; use Text::CSV; -use Encode qw/decode/; +use Encode qw/from_to/; my $debug = 0; my $path = shift @ARGV || die "usage: $0 file.csv\n"; my $csv = read_file( $path ); -$csv = decode('utf-16', $csv); +from_to($csv, 'utf-16', 'utf-8'); my @columns; @@ -49,7 +49,7 @@ foreach my $line ( split(/\r?\n/, $csv) ) { $v =~ s{\s+}{#}g if $n =~ m{tel}; $v =~ s[\x{17d}][F] if $n =~ m{spol}; - if ( $v =~ m{#} ) { + if ( $v =~ m{#} ) { # subfields delimiter in CSV data my @v = split(/\s*#+\s*/, $v); foreach my $pos ( 0 .. $#v ) { if ( $n =~ m{tel} ) { @@ -61,8 +61,11 @@ foreach my $line ( split(/\r?\n/, $csv) ) { } $hash->{ $n . '_' . $pos } = $v[$pos]; } + + $hash->{ $n } = [ @v ]; + } else { + $hash->{ $n } = $v; } - $hash->{ $n } = $v; } warn dump( $hash ) if $debug;