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 |
|
|
47 |
|
|
48 |
# fix tel fields |
# fix tel fields |
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[\xC5\xBD][F]i if $n =~ m{spol}; |
51 |
|
|
52 |
if ( $v =~ m{#} ) { # subfields delimiter in CSV data |
if ( $v =~ m{#} ) { # subfields delimiter in CSV data |
53 |
my @v = split(/\s*#+\s*/, $v); |
my @v = split(/\s*#+\s*/, $v); |