@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
@sorted = sort { $a <=> $b; } @unsorted;
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.