print "@_\n";
4109 4121 6823 12967 12971 14003 20186
如何在 Perl 中对其进行排序?使用
@sorted = sort(@_);
给我一个字母顺序:13041 13045 14003 20186 4109 4121 6823
如何获得数字排序? Perl 是否具有用于合并排序、插入排序等的内置函数?
最佳答案
您可以将自定义比较函数传递给 Perl 的排序例程。只需使用:
@sorted = sort { $a <=> $b } @unsorted;
sort
function 接受自定义比较函数作为其第一个参数,以代码块的形式。 {...}
部分就是这个代码块(见 http://perldoc.perl.org/functions/sort.html )。sort
每当需要比较要排序的数组中的两个元素时,都会调用此自定义比较函数。 sort
总是将两个值作为 $a
进行比较, $b
,并且比较函数必须返回比较的结果。在这种情况下,它只是使用运算符进行数字比较(参见 http://perldoc.perl.org/perlop.html#Equality-Operators ),这可能是为此目的而创建的:-)。无耻地从“Perl Cookbook”窃取的解决方案,第04章第15章(买书-值得!)
关于arrays - Perl中如何对数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574336/