基本的詞彙排序

@sorted = sort @list;

@sorted = sort { $a cmp $b } @list;

sub compare { $a cmp $b }
@sorted = sort compare @list;

上面的三個例子完全相同。如果你不提供任何比較器功能或阻止,sort 假設你希望列表在其右側按詞彙排序。如果你只需要一些可預測的資料並且不關心語言的正確性,那麼這通常就是你想要的形式。

sort@list 中的專案對傳遞給比較器函式,該函式告訴 sort 哪個專案更大。cmp 操作符為字串執行此操作,而 <=> 對數字執行相同操作。比較器經常被呼叫,平均 n * log( n )次, n 是要排序的元素數,所以它很快就很重要。這就是 sort 使用預定義的包全域性變數($a$b)來傳遞要與塊或函式進行比較的元素而不是正確的函式引數的原因。

如果你是 use localecmp 會考慮特定於語言環境的整理順序,例如它會在丹麥語環境下將Å分類為 A,但是在英語或德語之後的 Z 之後。但是,它不考慮更復雜的 Unicode 排序規則,也不提供對訂單的任何控制 - 例如,電話簿通常與字典排序不同。對於這些情況,建議使用 Unicode::Collate,特別是 Unicode::Collate::Locale 模組。