in reply to Making an array out of each line of a text file

Well, here's one way to do it.
while (<DATA>) { chomp; my @line = split /,\s*/; my $key = shift @line; push @{$data{$key}}, \@line; } print $data{"Andrea"}[0][1], " should be good\n"; # offsets off by one print $data{"Dave"}[0][1], " should be better\n"; print $data{"Joe"}[0][1], " should be 0\n"; __END__ Andrea, 6, good, nice, 3 Bill, 5, 4, better, 5, 7, 4 Clark, 4, 5 Dave, best, better, best Joe, 5, 0 Joe, 4, 6 William, 6, 7, 8, 3 , 1 ,5 Andrea, 45, bettr, best, 6

-- Randal L. Schwartz, Perl hacker

Replies are listed 'Best First'.
RE: Re: Making an array out of each line of a text file
by Anonymous Monk on Aug 25, 2000 at 21:37 UTC
    This is what I came up with (this is the whole script) and i really dont know what to do to make it to work. I've been trying to mess around with stuff but it's not working.. :(

    I'm looking at other wayts to write it but none of them seem as effecient (with as less lines of code) as yours. Could you quickly look through it and see if any errors/screw ups pop out at you? Your help is greatly appreciated (..and I thought Perl was going be easy as cake :)

    #!/usr/local/bin/perl $DATA='data.txt'; open (DATA,"<$DATA") || die "Can't open $DATA $!"; @line = <DATA>; foreach (@line) { chop; ($key, $one, $two, $three, $four, $five, $six) = (split(/,/)); $key = "" if !defined($key); #this should make it null 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); } while (<DATA>) { chomp; @line = (split(/,/)); # was getting errors on split /,\s*/; $key = shift @line; push @{$data{$key}}, \@line; } print $data{"Andrea"}[0][1], " should be good\n"; # offsets off by one + + print $data{"Dave"}[0][1], " should be better\n"; print $data{"Joe"}[0][1], " should be 0\n"; close(DATA);
        I tried to run your code but it's now working. I have a file in the same directory called data.txt (the file w/all of the info in it).. here's the script file i'm runninng
        #!/usr/local/bin/perl open (DATA,"<data.txt") || die "Can't open $DATA $!"; while (<DATA>) { chomp; @line = split(/,/); $key = shift @line; push @{$data{$key}}, \@line; } print $data{"Andrea"}[0][1], " should be good\n"; # offsets off by one + print $data{"Dave"}[0][1], " should be better\n"; print $data{"Joe"}[0][1], " should be 0\n";
        Here are the errors

        syntax error in file data.pl at line 10, next 2 tokens "@$data" Spurious backslash ignored at data.pl line 10. syntax error in file data_824.pl at line 14, next 2 tokens "}[" syntax error in file data.pl at line 15, next 2 tokens "}[" Execution of data.pl aborted due to compilation errors.
        sorry if i was confusing.