Your method of calculating variance can result in loss of significant
digits. For example, the following data produces a variance of 0 for
X on my machine (causing divbyzero errors later). The variance
should be the same for both X and Y (as the data differs only by a
constant).
999999997 9999997
999999998 9999998
999999999 9999999
Better results may be achieved by "centering" your variance
calculation about the mean.
my $VX = 0;
$VX += ($_  $MX)**2 for @x;
$VX /= $Xn;
You are also making far more passes over the data than necessary.
