in reply to schwartzian transform and sorting on two columns

just sort in one go:
@sortedarry = map { $_ ->[0] } sort { $a->[1] cmp $b->[1] || $a->[2] <=> $b->[2] } map { my @cols = split /\t/; [$_, $cols[9], $cols[22] ]; } @foo;
Boris