in reply to Closures and Statistics

First, to change this to use a closure so that it does what you want, you need to say something like:
my $bf_1; { # Start a new block to avoid cluttering the environment my $sum_x = 0; $bf_1 = sub { # This block references $sum_x, # so it will be captured in the closure my ($operation, @args) = @_; # You didn't mean @ARGV; it's for command-line args if($operation eq 'Add') { $sum_x += $args[0]; } }; }
Second, your eval"" isn't going to work. $a gets set to a string containing the actual values of the various variables you reference -- including $b, which at that point is the empty string. $b will then substitute that whole string in for $a. Not really what you want. There's no magic way of simultaneously solving two equations with textual substitution and eval"".

And finally, you might want to proofread your calculations for $sum_x2 and $sum_xy. :-)