my @sorted = map { $_->[2] } sort { ($a->[0])*($#v+1) + $a->[1] <=> ($b->[0])*($#v+1) + $b->[1] } map { [ !((split '\s+', $v[$_])[2] eq 'blahblah'), $_, $v[$_] ] } 0 .. $#v;