sort 函数可用来排序,它的一般用法形式如下:
[Perl] 纯文本查看 复制代码 my @result = sort by_number @some_numbers;
其中,by_number 是一个子函数,注意这里不要写上 & 符号,后面的 @some_numbers 是需要排序的数组。
排序一般有两种,一种是对数字排序,一种是对字符串排序(按 ASCII 码来排)。
在对数据排序的子程序里一般会用如下形式:
[Perl] 纯文本查看 复制代码 sub by_number { $a <=> $b };
其中 <=> 称为飞碟运算符(space ship),因为它看起来像一只飞碟。该操作符比较两个数字并且返回 -1, 0 或 1 。另外,$a 和 $b 是两个特殊的变量,无需进行更改。如果写成 $a <=> $b ,那么就是按照升序排列,反之写成 $b <=> $a 就变成了按照降序排列。
相对的,在比较字符串时,就会用到 cmp 这个操作符,和 <=> 类似,可以写成 $a cmp $b 或者 $b cmp $a 。
测试代码:
[Perl] 纯文本查看 复制代码 #!/usr/bin/perl
@list = ("www", "groad", "net", "mywenchang", "com");
print "Original list: @list\n";
sub ascii_sort {
$a cmp $b;
}
@sorted_list = sort ascii_sort(@list);
print "ASCII sort: @sorted_list\n";
sub numeric_sort {
$a <=> $b;
}
@number_sort = sort numeric_sort 18, 3, 5, 6.8, 10, 883;
print "Numeric sort: @number_sort.\n";
运行输出:$ ./cmpnum.pl
Original list: www groad net mywenchang com
ASCII sort: com groad mywenchang net www
Numeric sort: 3 5 6.8 10 18 883. |