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"; }