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: