use strict; use warnings; my $e = "foo(0)"; eval $e; sub foo { my $i = shift; print "$i foo\n"; if ($i < 10){ $i++; print "calling foo\n"; foo($i); } }