projects
/
virtual-ldap
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
init script for bin/ldap-rewrite.pl
[virtual-ldap]
/
bin
/
csv2yaml.pl
diff --git
a/bin/csv2yaml.pl
b/bin/csv2yaml.pl
index
4526926
..
b2623f6
100755
(executable)
--- 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 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 );
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;
my @columns;
@@
-45,14
+45,27
@@
foreach my $line ( split(/\r?\n/, $csv) ) {
$v =~ s{^\s+}{};
$v =~ s{\s+$}{};
$v =~ s{^\s+}{};
$v =~ s{\s+$}{};
- if ( $v =~ m{#} ) {
- my @v = split(/\s*#\s*/, $v);
+ # fix tel fields
+ $v =~ s{\s+}{#}g if $n =~ m{tel};
+ $v =~ s[\xC5\xBD][F]i if $n =~ m{spol};
+
+ if ( $v =~ m{#} ) { # subfields delimiter in CSV data
+ my @v = split(/\s*#+\s*/, $v);
foreach my $pos ( 0 .. $#v ) {
foreach my $pos ( 0 .. $#v ) {
+ if ( $n =~ m{tel} ) {
+ if ( $v[$pos] =~ m{^09} ) {
+ $hash->{ $n . '_mobile' } ||= $v[$pos];
+ } else {
+ $hash->{ $n . '_fixed' } ||= $v[$pos];
+ }
+ }
$hash->{ $n . '_' . $pos } = $v[$pos];
$hash->{ $n . '_' . $pos } = $v[$pos];
- $hash->{ $n . '_mobitel' } = $v[$pos] if $n =~ m{tel} && $v[$pos] =~ m{^09};
}
}
+
+ $hash->{ $n } = [ @v ];
+ } else {
+ $hash->{ $n } = $v;
}
}
- $hash->{ $n } = $v;
}
warn dump( $hash ) if $debug;
}
warn dump( $hash ) if $debug;