Hast Du denn eine Idee, was Du mit "funktioniert leider nicht" meinst?
Auf den ersten Blick ist zu erkennen, dass Du @achsen ausserhalb der Schleife deklarierst. Dadurch nutzt Du bei der Zuweisung immer die gleiche Speicheradresse und @achsen wird immer wieder neu überschrieben.
Ich würde folgendes vorschlagen, so kannst Du Dir @achsen sogar ganz sparen:
my %order = ();
my $screenid = "";
my @yx = ();
while( my @erg = $sth->fetchrow_array)
{
$order{$erg[0]} = [ @erg[1,2] ];
}
Ansonsten musst Du @achsen entweder in der Schleife deklarieren:
while ( bla ) {
my @achsen = ( blubb );
$order{$erg[0]} = \@achesn;
}
Oder Du nutzt eine Referenz auf ein anonymes Array:
while ( bla ) {
@achsen = ( blubb );
$order{$erg[0]} = [ @achsen ];
}
Was mir sonst noch so aufgefallen ist:
Auf ein Element eines Hash greifst Du mit $hash{key} zu, nicht mit %hash{key}.
Du brauchst die Variable, die den Hash-Key benennt, nicht in "" setzen: also $order{$erg[0]}
Es ist Dir dringendst angeraten "use strict;" und "use warnings;" im Skript zu benutzen.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!