在Perl中对字符串+数字进行排序
我有一个包含以下值的数组:在Perl中对字符串+数字进行排序,perl,sorting,Perl,Sorting,我有一个包含以下值的数组: scores Parent=mRNA1 scores Parent=mRNA2 scores Parent=mRNA3 scores Parent=mRNA4 scores Parent=mRNA5 scores Parent=mRNA6 scores Parent=mRNA7 scores Parent=mRNA8 scores Parent=mRNA9 scores Parent=mRNA10 scores Parent=mRNA11 scores Parent
scores Parent=mRNA1
scores Parent=mRNA2
scores Parent=mRNA3
scores Parent=mRNA4
scores Parent=mRNA5
scores Parent=mRNA6
scores Parent=mRNA7
scores Parent=mRNA8
scores Parent=mRNA9
scores Parent=mRNA10
scores Parent=mRNA11
scores Parent=mRNA1
scores Parent=mRNA2
scores Parent=mRNA3
scores Parent=mRNA4
scores Parent=mRNA5
scores Parent=mRNA6
scores Parent=mRNA7
scores Parent=mRNA8
scores Parent=mRNA9
scores Parent=mRNA10
scores Parent=mRNA11
但我不能把它们分类。通过使用sort{$a cmp$b}对它们进行排序,我得到:
scores Parent=mRNA1
scores Parent=mRNA10
scores Parent=mRNA11
scores Parent=mRNA2
scores Parent=mRNA3
scores Parent=mRNA4
scores Parent=mRNA5
scores Parent=mRNA6
scores Parent=mRNA7
scores Parent=mRNA8
scores Parent=mRNA9
我该怎么办?您可以隔离数字,并使用 您可以为此使用:
use strict;
use warnings;
use Sort::Naturally;
chomp( my @arr = <DATA> );
print "$_\n" for nsort @arr;
__DATA__
scores Parent=mRNA9
scores Parent=mRNA10
scores Parent=mRNA11
scores Parent=mRNA1
scores Parent=mRNA2
scores Parent=mRNA3
scores Parent=mRNA4
scores Parent=mRNA8
scores Parent=mRNA5
scores Parent=mRNA6
scores Parent=mRNA7
scores Parent=mRNA1
scores Parent=mRNA2
scores Parent=mRNA3
scores Parent=mRNA4
scores Parent=mRNA5
scores Parent=mRNA6
scores Parent=mRNA7
scores Parent=mRNA8
scores Parent=mRNA9
scores Parent=mRNA10
scores Parent=mRNA11