$ time perl -e 'use strict; > use warnings; > my $val2 > = $eval->(1); my $equation = "(2*(4*x-8)+3*x)-(10*x+1-9)"; # " = 0" omitted > $equation =~ s/x/\$_[0]/g; > my $eval = sub { eval $equation }; > my $val1 = $eval->(0); > my $val2 = $eval->(1); > die "No solution for this equation\n" unless $val1 - $val2; > my $result = -$val1 / ($val2 - $val1); > > printf "Result is %.10f\n", $result;' Result is 8.0000000000 real 0m0.044s user 0m0.015s sys 0m0.031s