in reply to schwartzian transform and sorting on two columns
Three problems:
1) You're missing square brackets around your array indexes in the topmost sort.
2) @cols is 0-based, so the 9th and 22nd column are in $cols[8] and $cols[21] respectively. You said there are only 22 colums, so $cols[22] is wrong.
3) Your sorts are in the wrong order. The higher precedence one should be at the top to make it execute last.
Finally, borisz is right. It'll be faster if you combine your two sorts into one.
@sortedarry = map { $_ ->[0] } sort { $a->[1] cmp $b->[1] || $a->[2] <=> $b->[2] } map { my @cols = split /\t/; [ $_, $cols[8], $cols[21] ] } @foo; print "$_\n" foreach @sortedarry;
|
|---|