Antwort: Sortieren mit Perl...
Kai.Windmoeller at rokd.de
Kai.Windmoeller at rokd.de
Wed Jan 26 08:33:15 CET 2000
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
More information about the Linux
mailing list