当输入部分包含字符时,Perl用数字方式对数组进行排序 [英] Perl Sorting Array Numerically When Parts of Entry Contain Character
本文介绍了当输入部分包含字符时,Perl用数字方式对数组进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Possible Duplicate:
Using Perl, how can I sort an array using the value of a number inside each array element?
我有一个看起来像这样的数组:
I have an array that looks like this:
my @arr = qw(r1.1 r10.1 r2.1 r33.1);
如何在Perl中对它们进行排序,以便产生:
How can you sort them in Perl so that it yields:
$VAR = ['r1.1', 'r2.1', 'r10.1', 'r33.1'];
推荐答案
下面是一个可以正常工作的排序子例程:
Here's a sort subroutine that will work:
sub mySort {
$a =~ /^r(\d+).(\d+)$/;
my ($a1, $a2) = ($1, $2);
$b =~ /^r(\d+).(\d+)$/;
my ($b1, $b2) = ($1, $2);
return $a2 <=> $b2 if ($a1 == $b1);
return $a1 <=> $b1;
}
要使用它,请执行以下操作:
To use it you do this:
my @sorted = sort mySort @arr;
这篇关于当输入部分包含字符时,Perl用数字方式对数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文