--- loncom/xml/run.pm 2000/10/30 20:05:19 1.9 +++ loncom/xml/run.pm 2000/11/14 22:24:38 1.10 @@ -1,6 +1,6 @@ package Apache::run; -sub evaluate { +sub evaluateold { my ($expression,$safeeval,$decls) = @_; # print "inside2 evaluate $decls with $expression
\n"; # gerd's old method interpolates unset vars @@ -14,7 +14,7 @@ sub evaluate { if ($@ eq '') { $result = $safeeval->reval('return $_;'); } else { - &Apache::lonxml::error("substituion on:$expression:with:$decls:caused"); + &Apache::lonxml::error("substitution on:$expression:with:$decls:caused"); } } else { &Apache::lonxml::error("defining:$expression:caused"); @@ -23,6 +23,20 @@ sub evaluate { return $result } +sub evaluate { + my ($expression,$safeeval,$decls) = @_; + unless (defined $expression) { return ''; } + my $result = ''; + $@=''; + $safeeval->reval('{'.$decls.';&evaluate(q|'.$expression.'|);}'); + if ($@ eq '') { + $result = $safeeval->reval('return $_;'); + } else { + &Apache::lonxml::error("substitution on:$expression:with:$decls:caused $@"); + } + return $result +} + sub run { my ($code,$safeeval) = @_; # print "inside run\n";