Priklad:
Nasledujici sekvence prikazu tridi pole x a vysledek uklada do pole y.
@x = (zdenek,14,borek,1,84,Cesta,2); @y = sort(@x); print "@y \n";Prikaz print zobrazi:
Vsimnete si, ze cisla v seznamu nejsou tridena numericky, ale jako retezce (1 14 2 ...).
Ke trideni jinym nez standardnim zpusobem je potreba definovat porovnavaci postup (proceduru), ktery popise, jak porovnat dva prvky. Tato procedura se bude volat pro kazde dva prvky seznamu. Procedura musi urcit, zda je prvni prvek mensi, roven nebo vetsi nez druhy prvek a vratit vysledkovy kod. Porovnavane hodnoty jsou do procedury predavane jako globalni promenne $a a $b.
Vysledkovy kod porovnavaci procedury je:
Priklad procedury, ktera porovnava numericky:
sub numericke { if ($a < $b) { -1; } elsif ($a == $b) { 0; } elsif ($a > $b) { 1; } }Priklad numerickeho trideni:
@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";Prikaz print v prikladu vypisuje tento seznam: 1 2 13 20 34 106.
Jednim z operatoru perlu je operator pro numericke porovnani <=>, ktery vraci hodnoty:
sub numericke { $a <=> $b; }nebo zapsat prikaz pro trideni primo ve tvaru:
@tcis = sort ({$a <=> $b} @cis)
Priklad:
%pole = ("prvni",24,"druhy",34,"treti",44); foreach $klic (sort keys %pole) { print "$klic $pole{$klic}\n"; }Uvedena sekvence prikazu tiskne prvky asociativniho pole %pole vzestupne setridene podle klicu. Tedy: