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;
$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 ) {
+ 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 } = [ @v ];
+ } else {
+ $hash->{ $n } = $v;
}
- $hash->{ $n } = $v;
}
warn dump( $hash ) if $debug;