Thread each-operator reseten?
(12 answers)
Opened by supersucker at 2005-04-30 17:57
hi,
hab einen hash der als schlüssel integer zahlen enthält und als value wieder einen hash mit (unter anderem) float-zahlen. nun möchte ich mir aus dem hash die 10 einträge mit den höchsten values rausholen, dies mach ich auf folgende (zugegebenermaßen ziemlich naive) art: ich durchlaufe den kompletten hash, hol mir das element mit dem höchsten wert, pushe das auf ein array, und lösche das entsprechende hash-element, und das eben 10 mal. dazu folgender code: Code: (dl
)
1 for my $i (1..$numberOfBestFrags) merkwürdigerweise klappt dies nun nur im ersten durchlauf der for-schleife, laufe ich das zweite, dritte usw. mal drüber, krieg ich immer folgende fehlermeldung: Code: (dl
)
Use of uninitialized value in numeric gt (>) at /root/development/eclipse/eclipse/workspace/PDB_FRAGMENT_LIB/bin/PDBQuery.pl line 436, <FILE> line 13484. versteh ich nicht, weil wenn ich in der for-schleife folgende print-anweisungen einfüge: Code: (dl
)
1 for my $i (1..$numberOfBestFrags) dann sehe ich dass der code beim ersten durchlauf das tut was er soll, nämlich das grösste element (bzw. der hash mit dem grössten element) wird auf ein array gepusht und anschliessend aus dem hash entfernt... bei jedem weiteren durchlauf der for-schleife jedoch bleibt die anzahl der keys und der values genau der gleiche, das sieht bei mir in der ausgabe z.B. so aus: Code: (dl
)
1 for loop nr. 1 und ich erhalte ab dem zweiten for-durchlauf obigen erwähnten fehler, dass ich in dem grösser-vergleich einen undefinierten wert verwende... woran kann das denn liegen? für mich sieht der code soweit ok aus, deswegen hab ich drauf getippt, dass vielleicht der each-operator nicht reseted wird... im kamel-buch von larry wall steht aber dazu: Quote ich dachte genau das würde ich tun....... oder liegt der fehler ganz woanders? danke im voraus für jede hilfe... |