use warnings;
my @a = (1, 11, 3, 5, 21, 9, 10);
my @b = sort @a;
print "@b";
Run Code Online (Sandbox Code Playgroud)
产量:1 10 11 21 3 5 9
键盘链接:http://codepad.org/Fvhcf3eP
我猜sort函数没有将数组的元素作为整数.这就是为什么输出不是:
1 3 5 9 10 11 21
是吗?
如何将上述结果作为输出?
Qui*_*ith 12
Perl sort
函数的默认实现是将值排序为字符串.要执行数字排序:
my @a = sort {$a <=> $b} @b;
Run Code Online (Sandbox Code Playgroud)
链接页面显示了如何以不相反的顺序(降序)排序不区分大小写的其他示例,依此类推.
您可以创建显式子例程以防止重复:
sub byord { $a <=> $b };
...
@a = sort byord @b;
Run Code Online (Sandbox Code Playgroud)
这在功能上等同于使用匿名子例程的第一个示例.
你是对的.所以告诉perl将它视为如下所示的整数.
猫foop.pl
use warnings;
my @a = (1, 11, 3, 5, 21, 9, 10);
my @b = sort {$a <=> $b} @a;
print "@b";
perl foop.pl
1 3 5 9 10 11 21
Run Code Online (Sandbox Code Playgroud)