5 # ls *.csv | xargs -i sh -cx "./csv2tsv.pl {} > tsv/{} 2>>/tmp/log"
7 use Data::Dump qw(dump);
12 while(my $line = <>) {
14 if ( $cols == 0 ) { # header
15 $cols = $line =~ s/([,;])/$1/g;
17 warn "# delimiter [$delimiter] columns=$cols\n";
20 $line =~ s/,$/,_null_/; # protect last empty column
22 my @v = split(/$delimiter/, $line);
24 #warn "FIX $#v $cols", dump(@v);
25 my @l2 = splice( @v, -2 ); # keep last two
26 my @fix = splice( @v, $cols - 3 );
27 warn "XXX before ",dump( @fix );
28 my ( $k, $v ) = ( shift(@fix), '' );
29 while ( @fix && (( length($k) + length($fix[0]) ) < 8 ) ) {
33 $k .= " " x (8 - length($k)); # pad key to 8 spaces
35 warn "YYY after ",dump( $k, $v );
36 die "ASSERT key < 8 [$k]" if length($k) < 8;
37 die "ASSERT key > 8 [$k]" if length($k) > 8;
38 @v = ( @v, $k, $v, @l2 );
43 $ENV{DEBUG} || print join("\t", @v), "\n";