|
sortaddr2.pl |
#!/usr/local/bin/perl -w # Anfang analog zu sortaddr.pl foreach $name (sort byLastName keys %address) { printf "%-20s | %s\n", $name, $address{$name}; } sub byLastName { my ($left, $right) = ($a, $b); $left =~ s/.*\s//; $right =~ s/.*\s//; return $left cmp $right || $a cmp $b; } |
Bei sort kann noch vor der Liste der zu sortierenden
Elemente ein Sortierkriterium in Form einer speziellen
Prozedur eingeschoben werden.
| |
Sortierkriterien erhalten genau zwei Parameter namens
$a und $b (wie sonst auch via call by reference).
| |
Das Sortierkriterium liefert analog zur C-Funktion
strcmp entweder einen Wert $< 0$, $= 0$ oder $> 0$
zurück -- je nachdem, ob $a kleiner, gleich oder größer
als $b ist.
| |
Perl hat zwei Sätze von Vergleichsoperatoren: Der
aus C gewohnte Satz vergleicht numerisch, die Operatoren
lt, le, eq, ne, ge und gt beziehen sich auf
Zeichenketten.
| |
Die speziellen Operatoren <=> und cmp liefern einen
Wert analog zu strcmp und sind damit ideal für
Sortierkriterien.
|
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000 |