有如下三组代码用大小进行排序
17 1000 04 1.50 3.14159
-10 1.5 4 2001 90210 666
9 0 2 1 0
2001 42 -40 98.6 2.71828
-10 1.5 4 2001 90210 666
9 0 2 1 0
2001 42 -40 98.6 2.71828
传统的sort排序只能按照ascii排序 不能按照数字的大小进行排序
用如下代码进行排序
#!/usr/bin/perl
while (<>) {
push @numbers,split; #每行以空格做分解符,存入@numbers
}
foreach (sort {$a<=>$b} @numbers){
print "$_\n";
}
while (<>) {
push @numbers,split; #每行以空格做分解符,存入@numbers
}
foreach (sort {$a<=>$b} @numbers){
print "$_\n";
}
sort {$a<=>$b} @numbers的语句等价于
sub by_number{
if $a>$b{1}
elsif $a<$b{-1}
else $a=$b{0}
}
简写
sub by_number{
$a<=>$b
}
if $a>$b{1}
elsif $a<$b{-1}
else $a=$b{0}
}
简写
sub by_number{
$a<=>$b
}
结果
-40
-10
0
0
1
1.50
1.5
2
2.71828
3.14159
04
4
9
17
42
98.6
666
1000
2001
2001
90210
-10
0
0
1
1.50
1.5
2
2.71828
3.14159
04
4
9
17
42
98.6
666
1000
2001
2001
90210
转载于:https://blog.51cto.com/mcshell/494630