The correct code is Professor Schwartz's code, evaluate that. I can see you tried to copy it, but there are a few mistakes. As a newbie to Perl, it is important to know what you did incorrectly. I hope this helps you with future Perl. As that is the most important thing, that you get a good understanding of perl.
#!/usr/local/bin/perl $DATA='data.txt'; open (DATA,"<$DATA") || die "Can't open $DATA $!"; # # Why do this??? # # @line = <DATA>; #foreach (@line) { # # for future reference, chop is unsafe ( it cuts off the last # character, no matter what it is ) use chomp instead, it # takes off all of the trailing whitespace. # # chop; # #the brackets around split are unnecessary # # ($key, $one, $two, $three, $four, $five, $six) = (split(/,/)); # # This is completely unnecessary ( since they are already null if they + do not exist ) # the only things you might get are warnings of uninitialized variable +s. # # $key = "" if !defined($key); #this should make it n +ull if nothing's there # $one = "" if !defined($one); # $two = "" if !defined($two); # $three = "" if !defined($three); # $four = "" if !defined($four); # $five = "" if !defined($five); # $six = "" if !defined($six); #} # # Notice Code, ALA Schwartz # #while (<DATA>) { # chomp; # my @line = split /,\s*/; # my $key = shift @line; # push @{$data{$key}}, \@line; #} # while (<DATA>) { chomp; # # Once again brackets around split are totally unnecessary # # # if you do not put my in front of @line, when you # push the reference (\@line), onto the array in the hash, # you will get a reference to the same array over and over # # also would be good to put my in front of $key, although # not necessary # @line = split(/,\s*/); # was getting errors on split / +,\s*/; $key = shift @line; push @{$data{$key}}, \@line; } print $data{"Andrea"}[0][1], " should be good\n"; # offset +s off by one print $data{"Dave"}[0][1], " should be better\n"; print $data{"Joe"}[0][1], " should be 0\n"; # # Good programming Style # close(DATA);

I hope this helps
- Have Fun, XDB19

In reply to Re: Making an array out of each line of a text file by xdb19
in thread Making an array out of each line of a text file by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.