in reply to Re^9: Saving sql results to an array all rows?
in thread Saving sql results to an array all rows?

Cristoforo thanks for the reply, however when using the code you provided I get the same results correct results but unsorted. Any ideas? I changed my query to only return two rows so it would closely follow your example. Below are the results. Thanks
my @data = map { [$_, split(/\./, (split /\s+/, $_)[1])]} @al +l_rows; #print Dumper @data; my @sorted = map{$_->[0]} sort {$a->[1] cmp $b->[1]} map { [$_, inet_aton($_->[1]) ]} @data; print Dumper @sorted; } Results $VAR1 = [ [ '2008-07-26', '13.168.1.1' ] ]; $VAR2 = [ $VAR1->[0] ]; $VAR1 = [ [ '2008-07-26', '10.169.1.1' ] ];

Replies are listed 'Best First'.
Re^11: Saving sql results to an array all rows?
by Cristoforo (Curate) on Aug 21, 2008 at 16:10 UTC
    Well, you're almost there. You don't need the code line

    my @data =  map { [$_, split(/\./, (split /\s+/, $_)[1])]} @all_rows;

    That isn't necessary. I don't know why you did that! You transformed @all_rows using the same buggy code Krambambuli noted in his last post. Try the code below, without the transformation.

    my @sorted = map{$_->[0]} sort {$a->[1] cmp $b->[1]} map { [$_, inet_aton($_->[1]) ]} @all_rows; print Dumper \@sorted;

    (Also, leave the backslash before print Dumper \@sorted;. It's there to print out the array as a whole using Data::Dumper. Did you paste my example code and run it?)

      Yeah I ran the sample code that you have and saw that the IP's were properly sorted(as they should be). Here is the code that I got, but I am still getting unsorted results??? FYI I changed where the sorting fell in the loop since it was only giving me the first result then moving on to the next one. Below are the sample results, like I mentioned they are not getting sorted and I am not sure why? Thanks for the help once again!
      foreach my $line (@lines) { $sth->execute($line, $line) or die "Can't execute SQL statemen +t: $DBI::errstr\n"; my @all_rows; while ( my $ref = $sth->fetchrow_arrayref()) { push(@all_rows, $ref); my @sorted = map{$_->[0]} sort {$a->[1] cmp $b->[1]} map { [$_, inet_aton($_->[1]) ]} @all_rows; print Dumper \@sorted; } } -------------------------------------------------------- Results: FYI there are three entries in the file which is save to the +@line array so three results shown below. $VAR1 = [ [ '2008-07-26', '10.10.10.1' ], $VAR1->[0], $VAR1->[0], ]; $VAR1 = [ [ '2008-07-26', '192.168.1.32' ], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0] ]; $VAR1 = [ [ '2008-07-26', '1.1.1.1' ], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], $VAR1->[0], ];
        FYI disregard the extrac $VAR1->[0] entries they were due to the my all_rows being defined I changed the line
        push(@all_rows, $ref); to -> push(my @all_rows, $ref);