#!/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);
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
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |