/[virtual-ldap]/bin/csv2yaml.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /bin/csv2yaml.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 15 by dpavlin, Sun Mar 15 21:07:54 2009 UTC revision 25 by dpavlin, Mon Mar 16 13:54:50 2009 UTC
# Line 11  use Data::Dump qw/dump/; Line 11  use Data::Dump qw/dump/;
11  use File::Slurp;  use File::Slurp;
12  use YAML qw/DumpFile/;  use YAML qw/DumpFile/;
13  use Text::CSV;  use Text::CSV;
14  use Encode qw/decode/;  use Encode qw/from_to/;
15    
16  my $debug = 0;  my $debug = 0;
17    
18  my $path = shift @ARGV || die "usage: $0 file.csv\n";  my $path = shift @ARGV || die "usage: $0 file.csv\n";
19    
20  my $csv = read_file( $path );  my $csv = read_file( $path );
21  $csv = decode('utf-16', $csv);  from_to($csv, 'utf-16', 'utf-8');
22    
23  my @columns;  my @columns;
24    
# Line 49  foreach my $line ( split(/\r?\n/, $csv) Line 49  foreach my $line ( split(/\r?\n/, $csv)
49                  $v =~ s{\s+}{#}g if $n =~ m{tel};                  $v =~ s{\s+}{#}g if $n =~ m{tel};
50                  $v =~ s[\x{17d}][F] if $n =~ m{spol};                  $v =~ s[\x{17d}][F] if $n =~ m{spol};
51    
52                  if ( $v =~ m{#} ) {                  if ( $v =~ m{#} ) { # subfields delimiter in CSV data
53                          my @v = split(/\s*#\s*/, $v);                          my @v = split(/\s*#+\s*/, $v);
54                          foreach my $pos ( 0 .. $#v ) {                          foreach my $pos ( 0 .. $#v ) {
55                                  if ( $n =~ m{tel} ) {                                  if ( $n =~ m{tel} ) {
56                                          if ( $v[$pos] =~ m{^09} ) {                                          if ( $v[$pos] =~ m{^09} ) {
# Line 61  foreach my $line ( split(/\r?\n/, $csv) Line 61  foreach my $line ( split(/\r?\n/, $csv)
61                                  }                                  }
62                                  $hash->{ $n . '_' . $pos } = $v[$pos];                                  $hash->{ $n . '_' . $pos } = $v[$pos];
63                          }                          }
64    
65                            $hash->{ $n } = [ @v ];
66                    } else {
67                            $hash->{ $n } = $v;
68                  }                  }
                 $hash->{ $n } = $v;  
69          }          }
70    
71          warn dump( $hash ) if $debug;          warn dump( $hash ) if $debug;

Legend:
Removed from v.15  
changed lines
  Added in v.25

  ViewVC Help
Powered by ViewVC 1.1.26