Monica y Stefan
Leonardo, Daniela

HomeFotosLeonardoDanielaKalenderPerl

Sortieren

Einfache alfanumerische Sortierung

@sorted = sort { $a cmp $b; } @unsorted;   a b c z A B C Z 0 2
oder einfach: @sorted = sort @unsorted;
@sorted = sort { $b cmp $a; } @unsorted;   Z C B A z c b a

@sorted = sort { lc $a cmp lc $b; } @unsorted;    a A b B c C z Z

Einfache numerische Sortierung

@sorted = sort { $a <=> $b; } @unsorted;

Leere Elemente am Schluss

Eine alfanumerische Sortierung liefert leere Elemente am Anfang. Wenn man dieses Verhalten umkehren möchte geht das so:
@sorted = sort { if ($a eq '') { return 1; } elsif ($b eq '') { return -1; } else { return $a cmp $b; } } @unsorted;

Damit lassen sich beinahe alle wünschenswerten Sortierungen verwirklichen. Z.B. alle y an den Anfang und alle b an den Schluss:
@sorted = sort { if ($a eq 'y') { return 1; } elsif ($b eq 'b') { return -1; } else { return $a cmp $b; } } @unsorted;

Braucht man das wirklich? Vielleicht nicht wenn Arrays sortiert werden müssen, mit Hashes kann es aber sehr nützlich sein.

zum Inhalt