my @sorted = sort { ( $times{$a} //= expensive_call($a) ) <=> ( $times{$b} //= expensive_call($b) ) } @old_array;