Sortierkriterien

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

sortaddr2.pl
foreach my $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 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003