for (0 .. $#$o) { my $idx = $$o[$_]; next if $P[$idx] == $_; swap($a, $P[$idx], $_); (@P[$R[$_],$idx], @R[$P[$idx],$_]) = (@P[$idx,$R[$_]], @R[$_,$P[$idx]]); }