--- loncom/xml/run.pm 2000/11/15 15:29:33 1.11 +++ loncom/xml/run.pm 2001/02/19 20:43:00 1.15 @@ -2,7 +2,7 @@ package Apache::run; sub evaluateold { my ($expression,$safeeval,$decls) = @_; -# print "inside2 evaluate $decls with $expression
\n"; +# print "inside2 evaluate $decls with $expression
\n"; # gerd's old method interpolates unset vars # $safeeval->reval('return qq('.$expression.');'); unless (defined $expression) { return ''; } @@ -27,7 +27,7 @@ $Apache::run::EVALUATE_STRING=<<'ENDEVAL my %oldexpressions=(); while (!$oldexpressions{$_}) { $oldexpressions{$_}=1; - $_ =~s/((?:\$|\&)(?:[\#|\$]*[A-Za-z][\w]*|\{[A-Za-z][\w]*\}))([\[|\{][\w\'\"]+[\]\}])*?(\([\w\'\"]+\))*?(?=[^\[\{\(]|$)/eval(defined(eval($1.$2))?eval('$1.$2.$3'):'$1.$2.$3')/seg; + $_ =~s/((?:\$|\&)(?:[\#|\$]*[A-Za-z][\w]*|\{[A-Za-z][\w]*\}))([\[\{][^\$\&\]\}]+[\]\}])*?(\([^\$\&\)]+\))*?(?=[^\[\{\(]|$)/eval(defined(eval($1.$2))?eval('$1.$2.$3'):'$1.$2.$3')/seg; } ENDEVALUATE @@ -42,6 +42,7 @@ sub evaluate { # $safeeval->reval('{'.$decls.';<< &evaluate(q|'.$expression.'|);}'); if ($@ eq '') { $result = $safeeval->reval('return $_;'); + chomp $result; } else { &Apache::lonxml::error("substitution on:$expression:with:$decls:caused $@"); } @@ -52,12 +53,17 @@ sub run { my ($code,$safeeval) = @_; # print "inside run\n"; $@=''; - my $result=$safeeval->reval($code); + my (@result)=$safeeval->reval($code); if ($@ ne '') { &Apache::lonxml::error(":$code:caused"); &Apache::lonxml::error($@); } - return $result; + if ( $#result < '1') { + return $result[0]; + } else { + &Apache::lonxml::debug("Got lots results:$#result:"); + return (@result); + } } 1;