Das einfachste ist, das Schreiben einer eigenen Sortierfunktion. Das is nicht schwierig, weil man nur den Vergleich definieren brauch. @ergebnis = sort {Vergleichsfunktion} (Liste); Häufig findet man das in dieser Form @ergebnis = sort &by_name (Liste); oder so ähnlich. die Funktion hat zwei lokale Variablen definiert $a und $b, der Rückgabewert der Funktion ist -1 wenn $a < $b 0 wenn $a == $b 1 wenn $a > $b Bei Hashes ist $a,$b jeweils der Schlüssel des Eintrags. Du wirst warscheinlich die beinen operatoren <=> und cmp praktisch finden, weil die diese Vergleiche für Zahlen bzw. Strings durch führen $erg = $a <=> $b; Die Funktion die du suchst sieht warscheinlich so aus @Ergebnis = sort &log (@Liste); sub log { local ($erg, @a, @b); @a = split /;/, $a; @b = split /;/, $b; $erg = $b[3] <=> $a[3]; # Falsch rum für umgekehrte Reihenfolge if ($erg == 0) { $erg = $b[1] <=> $a[1]; # Falsch rum für umgekehrte Reihenfolge if ($erg == 0) { $erg = $a[0] cmp $b[0]; } } $erg; } Ich hoffe dies hilft und ich habe keine Fehler gemacht. Gruß Kai
Teilnehmer (1)
-
Kai.Windmoeller@rokd.de