Thread Array Derefenzieren
(6 answers)
Opened by Enana at 2015-06-06 00:00
Dein erster Fehler:
Code (perl): (dl
)
push @data,[@ref]; $ref ist nicht @ref! zweiter Fehler: Code (perl): (dl
)
@data->[$fields{column1}] Das sagt: Gib variable data als Array aus, indem auf die Array-referenz data zugegriffen wird und der index $fields{column1} benutzt wird. Wie du siehst ist das ein völliges durcheinander. @data ist eine Liste der aus der DB gelesenen "Zeilen" nicht die Spalten. @data ist ein "ArrayOfArrays" (AoA) Du Willst wahrscheinlich bei dem min den minimalen Wert der Spalte mit dem Namen "column1" haben. Dafür musst du alle Zeilen durch gehen und die passende Spalte Lesen. Was du wahrscheinlich willst: Code (perl): (dl
)
my $var2 = min map{ ( $_->[$fields{column1}] ) }@data oder: Code (perl): (dl
)
1 2 3 my @tmp; push(@tmp,$_->[$fields{column1}]) for(@data); my $var2 = min @tmp; Daraus wird also: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 my @data; my $col=0; my %fields; foreach( @{$sth->{NAME_lc}} ){ $fields{$_} = $col++; } while(my $ref=$sth->fetchrow_arrayref){ push( @data, $ref ); } my $var1 = $data[0]->[$fields{column1}]; my $var2 = min map{ ( $_->[$fields{column1}] ) }@data; Der Code ist auch etwas umständlich. Du könntest es auch so machen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 my @data; my @data; while( my $ref = $sth->fetchrow_hashref() ){ push( @data, $ref ); } my $var1 = $data[0]->{column1}; my $var2 = min map{ $_->{column1} } @data; |