in reply to Re^2: insert null in missing places of csv
in thread insert null in missing places of csv

awesome

this meets my requirement, all other suggestions are even replacing 0 with NULL.

Could you please suggest me how can i call csv file directly inside the script instead of calling it on command prompt ?

This is what I am running using your input:

#!/usr/bin/perl #use strict; use warnings; use Text::CSV_XS qw( csv); csv (in => csv ( in => *ARGV, blank_is_undef => 1, on_in => sub { $_ //= "NULL" for @{$_[1]}; }, ), );
perl test.pl 1.csv

all i need is to call 1.csv inside test.pl only

perl test.pl

Replies are listed 'Best First'.
Re^4: insert null in missing places of csv
by Tux (Canon) on Feb 20, 2016 at 10:52 UTC

    It's in the docs:

    # use command line args in => *ARGV, # use a file in => "1.csv",

    Enjoy, Have FUN! H.Merijn
Re^4: insert null in missing places of csv
by hippo (Archbishop) on Feb 20, 2016 at 09:38 UTC

    In Perl the command line arguments are automatically transferred into the special array @ARGV. All you need to do is replace @ARGV in your code with some other static array of your choice.

      TRIED THIS

      but getting syntex error :(

      #!/usr/bin/perl #use strict; use warnings; use Text::CSV_XS qw( csv); my $input_dir = "d:\\perl"; #defining path for input directory my $output_dir = "d:\\perl\\output"; #defining path for output directo +ry my $input_file = "$input_dir\\output8.csv"; #defining path for input f +ile my $output_file = "$output_dir\\output82.csv"; #defining path for outp +ut file in which X from time stamp is replaced with 0 print STDOUT "\n removing $output_file if already exists \n"; unlink ($output_file); #removing $output_file if already exists \n"; open (OUTPUT, ">>$output_file") or die "Error 016: Error creating $out +put_file \n"; #create and output file open (INPUT, "<$input_file") or die "Error 001: Error locating file $i +nput_file \n"; #open input file csv (in => csv { in => (<INPUT>), blank_is_undef => 1, on_in => sub { $_ //= "NULL" for @{$_[1]}; }, } print OUTPUT; #print in output +file close (OUTPUT); #close output f +ile close (INPUT);

      OUTPUT

      D:\perl>perl test.pl syntax error at test.pl line 24, near "close" Execution of test.pl aborted due to compilation errors.

        The wrong brackets here in => csv { and missing the closing one from csv (

        Try this

        csv ( in => csv ( # not { in => *INPUT, blank_is_undef => 1, on_in => sub { $_ //= "NULL" for @{$_[1]}; }, ), out => *OUTPUT, eol => $/, );
        poj
Re^4: insert null in missing places of csv
by choroba (Cardinal) on Feb 20, 2016 at 18:08 UTC
    > all other suggestions are even replacing 0 with NULL.

    Mine doesn't. Or do you think that length 0 is false?

    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
Re^4: insert null in missing places of csv
by AnomalousMonk (Archbishop) on Feb 20, 2016 at 15:34 UTC
    ... all other suggestions are even replacing 0 with NULL.

    The regex solution does not!


    Give a man a fish:  <%-{-{-{-<