for my $i (0..$#r) { my $p = $i + 1; for my $j ($p .. $#r) { next unless $r[$i]->[2] == $r[$j]->[0] && $r[$i]->[3] == $r[$j]->[1]; @r[$p, $j] = @r[$j, $p]; last; } }