--- loncom/xml/run.pm	2000/06/29 13:58:23	1.3
+++ loncom/xml/run.pm	2000/06/29 20:27:44	1.5
@@ -1,12 +1,13 @@
 package Apache::run;
 
 sub evaluate {
-  my ($expression,$safeeval) = @_;
-#  print "inside2 evaluate with $expression\n";
+  my ($expression,$safeeval,$decls) = @_;
+# print "inside2 evaluate with $expression\n";
 # gerd's old method interpolates unset vars
-#  $safeeval->reval('return qq('.$expression.');');
+# $safeeval->reval('return qq('.$expression.');');
+  unless (defined $expression) { return ''; }
   $safeeval->reval('$_=\''.$expression.'\';');
-  $safeeval->reval('$_=~s/(\$\{?[A-Za-z]\w*\}?)/(defined(eval($1))?eval($1):$1)/ge;');
+  $safeeval->reval('{'.$decls.'$_=~s/(\$\{?[A-Za-z]\w*\}?)/(defined(eval($1))?eval($1):$1)/ge;}');
   $safeeval->reval('return $_;');
 }