Perl 要对阵列进行排序, 可以用内建函式 sort 来做, 例如:
|
1 2 3 4 5 6 7 8 9 |
#!/usr/bin/perl use strict; use warnings; my @words = qw(abc xyz def mmm); @words = sort @words; print "$_\n" for(@words); |
以上第 7 行用了 sort 对 @words 进行排序, 输出结果会是:
abc
def
mmm
xyz
def
mmm
xyz
但这个 sort 函式是用字串排序的,如果阵列的值是数值,sort 也会根据字串的方式排序,即 123 会排在 23 前面,因为 “1” 是排在 “2” 前面,这样是做不到排序数值的。这时对数值进行排序可以透过 <=> 实现,<=> 是 Perl 的比较运算子,会比较左右两个数值,
|
1 2 3 4 5 6 7 8 9 |
#!/usr/bin/perl use strict; use warnings; my @words = (123, 3, 5, 23, 8); @words = sort { $a <=> $b } @words; print "$_\n" for(@words); |
以上程式码用会正确对阵列 @words 以数值方式排序,输出结果为:
3
5
8
23
123
5
8
23
123