Jörk Behrends: Perl: Hash nach Werten sortieren

Beitrag lesen

Hallo auch ...

hi!

Für die Ausgabe wird der Hash in ein Array umgewandelt:
  @found = keys(%b);

Die Sortierroutine darf also irgendwo am Hash oder am Array ansetzen. Leider habe ich > > momentan keine Idee, wie ich das lösen könnte. Vielleicht kann mir einer von euch helfen?

für das Sortieren eines Arrays gibt es die sort-Funktion, die jedoch sortiert nur nach den

Leider funktioniert es so nicht :-( Ich erklär es nochmal ausführlicher:

Ich hab einen Hash %bewertung, der als Index die gefundene URL verwendet, und die Bewertung speichert. Zum Beispiel: $bewertung{'/index.html'} = 5;
Für die Ausgabe will ich aber die Suchergebnisse nach der Bewertung sortieren, sie stehen aber nach der Reihenfolge, wie sie gefunden wurden, im Hash, und damit auch im Array, in das ich den Hash umwandle.
Ich möchte also erst die Reihenfolge im Hash nach der Bewertung umsortieren und es dann in ein Array umwandeln. Und dafür funktioniert die sort-Funktion leider nicht :-(

bye, Frank!

Die sort-Funktion kann hier sehr gut eingesetzt werden:
Man hat die Möglichkeit, als Parameter auch eine Sortierfunktion mit anzugeben; Diese
kann dann für die eigentliche Sortierung den Hash-Wert heranziehen. Die Sortierfunktion
erhält keine eigentlichen Parameter. Stattdessen sind in den lokalen Variablen $a und $b
die zu vergleichenden Werte angegeben. <=> ist die numerische Vergleichsoperation:

@reihenfolge = sort {$bewertung($a) <=> $bewertung($b)} (keys(%bewertung));

Sollte die Reihenfolge andersherum gewünscht sein, so müssen $a und $b einfach vertauscht werden. Für Textvergleiche ist cmp anstelle von <=> zu verwenden...

Ich hoffe, daß Du hiermit das gewünschte erreichst

Jörk