Michael Schröpl: Array nummerisch sortieren - Variablen haben aber Form "NummerBuchstabe"

Beitrag lesen

Ich habe in einem Array Variablen der Form "1.Zahl+2.Zahl+Buchstabe+Buchstabe..." zusammengefaßt. Den Inhalt möchte ich nun aber sortiert nach den 1. Zahlen ausgeben. Versuche es per sort zu erledigen schlugen fehl. Auch die Subroutine, die in SelfHTML zum nummerischen Sortieren gezeigt wird, funktioniert hier (bei mir) nicht. Welche Möglichkeiten gibt es noch?

Ich versuche, solche Sortierungen immer mit der trivialen sort-Funktion zu erledigen (also nach ASCII zu sortieren).

Das erledigt nebenbei auch Dein Problem, wenn Du die Schlüssel passend wählst, also beispielsweise den numerischen Teil, z. B. mit Hilfe der Anweisung
      $key = sprintf ("%030d%s", $zahl, $alpha);
mit führenden Nullen aufpumpst (wieviele, das hängt von der Größe und Menge Deiner Zahlen ab - wenn es wenige sind, kannst Du klotzen).

Wenn Du dann "000047AB" und "000123XY" nach ASCII sortierst, erhältst Du das gewünschte Ergebnis. Hauptsache, der numerische Teil ist bei allen Schlüssel gleich lang.

Noch etwas: Achte darauf, daß Du eindeutige tie-Breaker hinten an die Schlüssel hängst. Das macht das Abspeichern der Schlüsselwerte im Hash viel einfacher - man muß ja irgendwas gegen doppelte Schlüsselwerte tun, und sie zu verhindern ist die eleganteste Lösung.