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: <%-{-{-{-<