The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

# see http://perlmonks.org/?node_id=814899

# Given a line defined by two points $l0 and $l1 calculate the
# distance to another point $p:

use Math::Vector::Real;

my $l0 = V(2, 3, 4);
my $l1 = V(1, 0, 1);

my $p = V(2, 2, 2);

# calculate the vector $n perpendicular to the line that goes to $p:

my $u = $l1 - $l0; # line direction

my $n = $p - $l0;
$n -= ($u * $n)/($u * $u) * $u;

# the distance is the length of the vector:

printf "The distance between the point %s and the line [%s - %s] is %g\n",
    $p, $l0, $l1, abs($n)