Příklad:
Následující sekvence příkazů třídí pole x a výsledek ukládá do pole y.
@x = (zdenek,14,borek,1,84,Cesta,2); @y = sort(@x); print "@y \n";Příkaz print zobrazí:
Všimněte si, že čísla v seznamu nejsou tříděna numericky, ale jako řetězce (1 14 2 ...).
Ke třídění jiným než standardním způsobem je potřeba definovat porovnávací postup (proceduru), který popíše, jak porovnat dva prvky. Tato procedura se bude volat pro každé dva prvky seznamu. Procedura musí určit, zda je první prvek menší, roven nebo větší než druhý prvek a vrátit výsledkový kód. Porovnávané hodnoty jsou do procedury předávané jako globální proměnné $a a $b.
Výsledkový kód porovnávací procedury je:
Příklad procedury, která porovnává numericky:
sub numericke { if ($a < $b) { -1; } elsif ($a == $b) { 0; } elsif ($a > $b) { 1; } }Příklad numerického třídění:
@cis = (34,20,2,13,1,106); @tcis = sort(numericke @cis); print "$tcis[0] $tcis[1] $tcis[2] $tcis[3] $tcis[4] $tcis[5]\n";Příkaz print v příkladu vypisuje tento seznam: 1 2 13 20 34 106.
Jedním z operátorů perlu je operátor pro numerické porovnání <=>, který vrací hodnoty:
sub numericke { $a <=> $b; }nebo zapsat příkaz pro třídění přímo ve tvaru:
@tcis = sort ({$a <=> $b} @cis)
Příklad:
%pole = ("prvni",24,"druhy",34,"treti",44); foreach $klic (sort keys %pole) { print "$klic $pole{$klic}\n"; }Uvedená sekvence příkazů tiskne prvky asociativního pole %pole vzestupně setříděné podle klíčů. Tedy: