in reply to Re^6: Undef values from file open
in thread Undef values from file open

What do you get with this

#!/usr/bin/perl use strict; use warnings; use Data::Dump 'pp'; my $file_name = "file.csv"; open my $lines, '<', $file_name or die "Can't open file $file_name, $!"; while (my $line = <$lines>) { pp $line; }

Replies are listed 'Best First'.
Re^8: Undef values from file open
by Anonymous Monk on Mar 22, 2016 at 22:07 UTC
    It prints all the data from the file no problem, this line also prints:
    print "$data->{ date }, $data->{ day }, $data->{ name }\n"
    This one gets me nothing:
    pp @{ $data }{ (@parms) };

      Here's another step along the debugging path poj began here. We know that each line of the file is being read correctly; now, what happens when we process a line and assign its sub-strings to the  $data hashref?

      c:\@Work\Perl\monks\Anonymous Monk\1158543>perl -e "use strict; use warnings; use Data::Dump 'pp'; ;; my $file_name = 'file.csv'; open my $lines, '<', $file_name or die qq{opening file '$file_name': $!}; ;; while (my $line = <$lines>) { pp $line; next unless $line =~ /\S/; chomp $line; my $data; ($data->{date}, $data->{day}, $data->{name}) = split(/,/, $line); pp $data; print qq{------- \n} } " "01/04/2014,Friday,Joe\n" { date => "01/04/2014", day => "Friday", name => "Joe" } ------- "02/11/2011,Monday,Mary\n" { date => "02/11/2011", day => "Monday", name => "Mary" } ------- "05/09/2016,Monday,Ann\n" { date => "05/09/2016", day => "Monday", name => "Ann" } ------- "07/02/2013,MOnday,Marc\n" { date => "07/02/2013", day => "MOnday", name => "Marc" } ------- "\n"
      What do you get when you run this code? Note that my data file contains a blank line at the end for which no further processing is done, as expected, so this aspect of the program works.

      BTW: I'd still be curious to know the exact version of Perl you're using. I don't really know what being "current" means.


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

      What does pp $data give, and what version of perl do you have ?

      What does pp @parms; give you ?

Re^8: Undef values from file open
by Anonymous Monk on Mar 22, 2016 at 22:44 UTC
    My Perl version is current, I get undef for all values.