Hi ikegami,
Thanks again. I used your code above but it kind of messed up the preliminary sorting. I tried to change it in the regex so it will implement it only on the brackets numbers and changed the sorting order. It succeeded in the brackets numbers but failed again for the "words" sort. This what I did:
my @new_list = map { $_->[0] }
sort { $b->[1] cmp $a->[1] }
map { ( my $s = $_ ) =~ s/\[(\d+)/sprintf('%010d%s', l
+ength($1),$1)/eg; [ $_, $s ] }
@split_list;
print "@new_list\n";
For the testcase I used the list I gave in the main thread.
This was the result I got:
a2_2[10] a2_2[2] a2_2[1] a2_1[10] a2_1[2] a2_1[1] a2_10[10] a2_10[2] a
+2_10[1] a1_2[10] a1_2[2] a1_2[1] a1_1[10] a1_1[2] a1_1[1] a1_10[10] a
+1_10[2] a1_10[1] a10_2[10] a10_2[2] a10_2[1] a10_1[10] a10_1[2] a10_1
+[1] a10_10[10] a10_10[2] a10_10[1]
I think I made quite a mess but I couldnt think of another way.
Can you advise?
Thanks! |