my @sorted = @unsorted[ map {$$_[1]} sort {$$b[0]<=>$$a[0]} map [expensive($unsorted[$_]), $_]; } 0..$#unsorted ];