in reply to Employing loops and constructing a matrix

Try to get your data into a convenient structure - i'd suggest an array-of-hashrefs.

Your results should be a 2-D array.

Here is some code to get you started (populated with sample data). You need to figure out how to get your data into this structure:

use strict; use warnings; my @points = ( {X=>79.620, Y=>66, Z=>12.3}, {X=>66.4, Y=>77, Z=>43.1}, {X=>73.6, Y=>55, Z=>93.7} ); my @results; for my $x(0..$#points){ my $p1 = $points[$x]; for my $y (0..$#points){ my $p2 = $points[$y]; my $dist = ( $p1->{X} - $p2->{X} ) **2 + ( $p1->{Y} - $p2->{Y} ) **2 + ( $p1->{Z} - $p2->{Z} ) **2 ; $results[$x][$y] = $dist; } } #------------------- for my $r (@results){ printf "%3.2f\t",$_ for @$r; print "\n"; }
Yes - there is room for optimization, since distances are symmetric, but, at this point, operational and simple code trumps efficient code that introduces complexity.

             All great truths begin as blasphemies.
                   ― George Bernard Shaw, writer, Nobel laureate (1856-1950)