8 # 03/15/2009 05:06:53 PM CET Dobrica Pavlinusic <dpavlin@rot13.org>
10 use Data::Dump qw/dump/;
12 use YAML qw/DumpFile/;
14 use Encode qw/from_to/;
18 my $path = shift @ARGV || die "usage: $0 file.csv\n";
20 my $csv = read_file( $path );
21 from_to($csv, 'utf-16', 'utf-8');
25 foreach my $line ( split(/\r?\n/, $csv) ) {
29 my @fields = split(/;/, $line);
32 warn "# columns = ",dump( @columns ) if $debug;
38 warn "# fields = ",dump( @fields ) if $debug;
40 foreach ( 0 .. $#fields ) {
49 $v =~ s{\s+}{#}g if $n =~ m{tel};
50 $v =~ s[\xC5\xBD][F]i if $n =~ m{spol};
52 if ( $v =~ m{#} ) { # subfields delimiter in CSV data
53 my @v = split(/\s*#+\s*/, $v);
54 foreach my $pos ( 0 .. $#v ) {
56 if ( $v[$pos] =~ m{^09} ) {
57 $hash->{ $n . '_mobile' } ||= $v[$pos];
59 $hash->{ $n . '_fixed' } ||= $v[$pos];
62 $hash->{ $n . '_' . $pos } = $v[$pos];
65 $hash->{ $n } = [ @v ];
71 warn dump( $hash ) if $debug;
73 my $uuid = $fields[0];
75 DumpFile( "yaml/$uuid.yaml", $hash );