4.2.12 將陣列以數值大小排序

sort 預設是以 ASCII 順序來排序,但我們可以改變 sort 預設的行為,改用數值大小做為排序依據,如下所示:

#! /usr/bin/perl

@test=(1, 4, 5, 22, 9, 101);

@mmm=sort {$a<=>$b} @test;

print join ',', @mmm, "\n\n";

# 輸出結果:

1,4,5,9,22,101,

真的按數值大小來排序了! (升冪)

上式中,若您想要改成降冪,可在 sort 之前再加 reverse 即可:

#! /usr/bin/perl

@test=(1, 4, 5, 22, 9, 101);

@mmm=reverse sort {$a<=>$b} @test;

print join ',', @mmm, "\n\n";

# 輸出結果:

101,22,9,5,4,1,

上式,也可以用以下方法:

#! /usr/bin/perl

@test=(1, 4, 5, 22, 9, 101);

# 把 $a 和 $b 調換,即成為降冪
@mmm=sort {$b<=>$a} @test;

print join ',', @mmm, "\n\n";

# 輸出結果:

101,22,9,5,4,1,

註:{$a<=>$b} 中 $a, $b 為 sort 預設作用的暫時變數,因此,您的變數最好不要取名為 $a, $b,以免產生不可預期的結果。