package Apache::run; sub evaluate { my ($expression,$safeeval,$decls) = @_; # print "inside2 evaluate with $expression\n"; # gerd's old method interpolates unset vars # $safeeval->reval('return qq('.$expression.');'); $safeeval->reval('$_=\''.$expression.'\';'); $safeeval->reval('{'.$decls.'$_=~s/(\$\{?[A-Za-z]\w*\}?)/(defined(eval($1))?eval($1):$1)/ge;}'); $safeeval->reval('return $_;'); } sub run { my ($code,$safeeval) = @_; # print "inside run\n"; $safeeval->reval($code); } 1; __END__;