John W. Krahn wrote:

On Thursday 01 July 2004 14:30, Rob Benton wrote:

I'm looking for a little help here.  I'm not understanding exactly
what's wrong with this code:

===============================================================
#!/usr/bin/perl -w

use strict;

open IN, "<comma.txt" or die "$!\n";

my %rows;

while (<IN>)
{
    chomp;
    my @fields = split( /,/, $_);
    $rows{$fields[2]} = [ ($fields[3]..$fields[-1]) ];
    print "array: ";
    print "@{$rows{$fields[2]}}\n";
}

close IN;
===========================================================

This prints nothing for the array.  If I replace the scalars inside [
() ] with literal strings or numbers it works.  What the correct way
to do what I'm attempting.  Am I just quoting wrong?


The value in $fields[3] has to be less than or equal to the value in $fields[-1] for the range operator to produce a non-empty list. Perhaps you want an array slice instead?

     $rows{ $fields[2] } = [ @fields[ 3 .. $#fields ] ];
     print "array: @fields[3..$#fields]\n";


John

Thanks guys.

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to