Sortierkriterien

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

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.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000