您的位置:首页 > 其它

perl sort   <=> and cmp

2013-01-14 14:19 323 查看
Perl
has two operators <=> and
cmp,

which are very
useful when wishing to sort arrays. $a
<=> $b returns -1 if $a
is numerically lesser than $b, 1 if it's greater, and zero
if they are equal.

cmp does the same for string comparison.
For instance the previous example could be re-written
as:

[liuguiyou@localhost perl]$ cat sort.pl

#!/usr/bin/perl

use strict;

use warnings;

my @array = (100,5,8,92,-7,34,29,58,8,10,24);

my @sorted_array = sort { $a <=> $b } @array;

print join("<", @sorted_array), "\n";

[liuguiyou@localhost perl]$ ./sort.pl

-7<5<8<8<10<24<29<34<58<92<100

Much
more civil, isn't it? The following example, sorts an array of
strings in reverse:

[liuguiyou@localhost perl]$ cat sort_chara.pl

#!/usr/bin/perl

use strict;

use warnings;

my @input = (

"Hello World!",

"You is all I need.",

"To be or not to be",

"There's more than one way to do it.",

"Absolutely Fabulous",

"Ci vis pacem, para belum",

"Give me liberty or give me death.",

"Linux - Because software problems should not cost money",

);

# Do a case-insensitive sort

my @sorted = sort { lc($a) cmp lc($b); } @input;

print join("\n", @sorted), "\n";

[liuguiyou@localhost perl]$ ./sort_chara.pl

Absolutely Fabulous

Ci vis pacem, para belum

Give me liberty or give me death.

Hello World!

Linux - Because software problems should not cost money

There's more than one way to do it.

To be or not to be

You is all I need.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: