0

I have an array with these values:

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

but I cannot sort them. By sorting them using sort { $a cmp $b }, I obtain:

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

What should I do?

2 Answers 2

4

You can isolate numbers, and compare/sort them numerically using <=>

@arr = map $_->[0], sort{ $a->[1] <=> $b->[1] } map [ $_, /(\d+)/ ], @arr;
Sign up to request clarification or add additional context in comments.

Comments

3

You can use Sort::Naturally for this:

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

Output:

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.