sub NearestNeighbours { #call as NearestNeighbours(\@Matrix) $sumNN=0; #initialize sum my $numberofsamples=scalar(@Matrix)/2; my $counter_outer=$numberofsamples; my $counter_inner=$numberofsamples; my ($xDNM, $yDNM, $xMoves, $yMoves,$i,$j); OUTER: for ($i = 1; $i <= $counter_outer; $i++) { my $NearestNeighbour=1000000;#initialize to something insanely large my $distance = 0; #initialize distance my $c=(2*$i-1); $xDNM=@Matrix[$c-1]; #xDoesNotMove $yDNM=@Matrix[$c]; INNER: for ($j = 1; $j <= $counter_inner; $j++) { my $d=(2*$j-1); if ($c==$d) {next INNER} $xMoves=@Matrix[$d-1]; $yMoves=@Matrix[$d]; $distance = sqrt(($xDNM-$xMoves)^2+($yDNM-$yMoves)^2); if ($distance<$NearestNeighbour) {$NearestNeighbour=$distance} } # next comparison for this sample $sumNN=$sumNN+$NearestNeighbour; } #next sample return ($sumNN); }# end of sub.