Frank Schönmann: Fragen zu Funktion NummernSort aus Selfhtml

Beitrag lesen

hi!

  1. Wo kommen die Variablen $a und $b her? Es sind keine
    vordefinierten Variablen wie $_ etc. Obwohl strict benutzt wird,
    werden Sie nicht mit my eingeleitet, und trotzdem meckert der
    Interpreter nicht. Warum nicht?

Es sind eben doch vordefinierte Variablen. In den Variablen $a und
$b stehen beim Sortieren immer zwei Werte. In der Funktion, die an
dieser Stelle verwendet wird, wertet man die beiden Variablen aus
und gibt zurück, welche der beiden kleiner ist bzw. ob beide gleich
groß sind. Die Perl-Funktion sort() sortiert dann anhand dieser
Angaben die Liste.

Schau dir auch mal die entsprechende Beschreibung von sort() in
perldoc an. Da sind jede Menge Beispiele dabei:

http://www.perldoc.com/perl5.6.1/pod/func/sort.html

  1. Was stellt sort mit den Rückgabewerten an? Ich weiß zwar, was
    sie bewirken, habe aber keine Ahnung, wie und warum es funktioniert.

-1 bedeutet, dass $a "kleiner" war, +1 bedeutet das Gegenteil. Wenn
beide gleich groß sind, sollte 0 heraus kommen. "Kleiner" steht in
dem Fall nicht unbedingt für eine übliche Ordnungsrelation: wenn du
deine Liste zb. absteigend sortieren willst statt aufsteigend, dann
müsste die Vergleichsfunktion 5 als kleiner als 3 ausgeben, damit
sort() die Liste wie gewünscht ordnet.

Hier noch ein Link auf den entsprechenden Abschnitt in SELFHTML:

http://selfhtml.teamone.de/cgiperl/funktionen/listenhashes.htm#sort

bye, Frank!