use Data::Dumper; my $m = Math::Light::Expression->new; $m->parse($expression); print Dumper $m->{ast}; for (0 .. 9) { print $val->({ a => $_ }), "\n"; # evaluate multiple times }