http://www.perlmonks.org?node_id=992215


in reply to csv file is not opening using use strict

The problem is in print:
print "$fields[0] fields[1]";
That shouuld be
print "$fields[0] $fields[1]";
Note that my @fields should be parenthesized to get a list; also, you opened $data, so don't forget to close it.
#!/usr/bin/perl -l BEGIN { $| = 1; $^W = 1; } use strict; use autodie; use warnings; my $file_c = '/root/Desktop/file1.csv'; open my $data, '<', $file_c or die "Could not open file: $!"; while ( defined( my $line = <$data> ) ) { do { next if ( $. == 1 ); chomp $line; my (@fields) = split( /,/, $line, 0 ); print "$fields[0] $fields[1]"; }; } close $data;

Replies are listed 'Best First'.
Re^2: csv file is not opening using use strict
by chromatic (Archbishop) on Sep 07, 2012 at 01:28 UTC
    print "$fields[0] fields1";

    That's not going to cause a bareword error under strict.

    BEGIN { $| = 1; $^W = 1; }

    Why? Especially $^W?

    Note that my @fields should be parenthesized to get a list...

    Why? Under what circumstances does the declaration of an array not provide list context?

    while ( defined( my $line = <$data> ) )

    defined is unnecessary here because Perl will add it for you.

    ... also, you opened $data, so don't forget to close it.

    The filehandle's stored in a lexical variable and it's the end of the program and you're not bothering to check the return value (for a filehandle opened for reading!), and the filehandle's at the end of the file at this point, and you have autodie in effect, so why bother?

Re^2: csv file is not opening using use strict
by GrandFather (Saint) on Sep 07, 2012 at 01:07 UTC

    That is a problem. It is not the problem. The missing $ does not cause any error or warning message to be generated because it is in a string.

    True laziness is hard work