在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