use Statistics::LineFit; my $x = [ 1..100 ]; my $y = [ map $_*2, 11..110 ]; my $lfit = Statistics::LineFit->new(); $lfit->setData($x, $y); printf "a=%.4f, b=%.4f, R2=%.4f\n", $lfit->coefficients(), $lfit->rSquared(); # which outputs: a=20.0000, b=2.0000, R2=1.0000