Beat: numerisch/alpha gemischter Sortier-Algorithmus

Beitrag lesen

Ein zu sortierender Key ist ein String, bestehend aus numerischen und nicht numerischen Zeichen.

also aus \d und \D
also aus allen möglichen Zeichen

Wobei bei meinem beispiel folgende Definition unterblieb:

0 < 1
aber ist undef < 0 ?
derzeit noch nicht entschieden.

Es wäre möglich einen String in mehrere Felder zu splitten. Ich weiss aber nicht, nach welcher Weise ich jedes Feld sortieren muss.
garnicht, den du willst ja nicht INNERHALB des Strings sortieren, sondern das Array

ja schon klar. Sortiert wird immer ein Array von irgend etwas.

$a<=>$b führt bei \D zu einem Error.
Ich muss zugeben, ich kenne diesen Operator nicht und ehrlich gesagt kann ich nicht mal raten welche sinnvolle Funktion diese Opterator-Kombination hat, da er Numerisch gesehen immer WAHR wäre.

Perl numerisch
sort{ $a <=> $b } @array

Perl alphabetisch
sort{ $a cmp $b } @array

gleichwertig mit
sort @array

Die Frage wäre, nach welchem Prinzip liesse sich ein solcher gemischter Algorithmus erstellen.
Theoretisch kannst du sortieren wonach du willst, dank Callback Funktion

ja schon klar dass ich auch
sort my_algorythm() @array
verwenden kann

gesucht ist ein sekundärer Sortierkey.
Was willst du genau machen? Eine Sortierfunktion, welche zuerst Sonderzeichen, dann Zahlen und dann Buchstaben anzeigt?

Ich suche die Eierlegende Wollmilchsau.
Ein String besteht aus Ketten von \d*\D* oder ist undef.
Es soll das skizzierte sortierte Beispiel herauskommen.

Mein Denkansatz geht in eine Art Heap-Prozedur.
Ich knabbere jeweils die vordersten \d+ bzw \D+ Zeichen der Keys an und ordne dann diese einem hash zu.

Ich zeuge dadurch einen hash von hashes und muss nun nur noch den hash rekursiv ausgeben, hier dürfte sort mit callback funktionieren.

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische