--- loncom/xml/run.pm 2004/03/31 05:24:00 1.46 +++ loncom/xml/run.pm 2004/08/10 19:16:40 1.49 @@ -1,6 +1,6 @@ package Apache::run; # -# $Id: run.pm,v 1.46 2004/03/31 05:24:00 albertel Exp $ +# $Id: run.pm,v 1.49 2004/08/10 19:16:40 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,7 +46,26 @@ while (!$_LONCAPA_INTERNAL_oldexpression # only match the above if there is not { [ ( coming up # Why? (I.e. this fails &a(1)[2] (?=[^\[\{\(]|$)/ - &__LC_INTERNAL_EVALUATE__($1,$2,$3)/sexg; + my ($__LC__a,$__LC__b,$__LC__c)=($1,$2,$3); + my $__LC__prefix; + my $__LC__result; + while (1) { + { + use strict; + no strict "vars"; + if (eval(defined(eval($__LC__a.$__LC__b)))) { + $__LC__result= $__LC__prefix.eval($__LC__a.$__LC__b.$__LC__c); + last; + } + } + $__LC__prefix.=substr($__LC__a,0,1,""); + if ($__LC__a!~m-^(\$|&|\#)-) { last; } + } + if (!defined($__LC__result)) { + $__LC__result=$__LC__prefix.$__LC__a.$__LC__b.$__LC__c; + } + $__LC__result; + /sexg; if (scalar(values(%_LONCAPA_INTERNAL_oldexpressions))>10) {last;} } ENDEVALUATE @@ -141,19 +160,23 @@ sub dump { if (($symname!~/^\_/) && ($symname!~/\:$/)) { my $line; if ($safeeval->reval('defined($'.$symname.')')) { - $line='$'.$symname.'='.$safeeval->reval('$'.$symname); + $line.='$'.$symname.'='.$safeeval->reval('$'.$symname)."\n"; } if ($safeeval->reval('defined(@'.$symname.')')) { - $line='@'.$symname.'=('. - $safeeval->reval('join(",",@'.$symname.')').")"; + $line.='@'.$symname.'=('. + $safeeval->reval('join(",",@'.$symname.')').")"."\n"; } if ($safeeval->reval('defined(%'.$symname.')')) { - $line='%'.$symname.'=('; + $line.='%'.$symname.'=('; $line.=$safeeval->reval('join(",",map { $_."=>".$'. $symname.'{$_} } sort keys %'. - $symname.')').")" + $symname.')').")"."\n" } - if ($line ne '') {$dump.=&HTML::Entities::encode($line,'<>&"')."
";} + if ($line ne '') { + $line=&HTML::Entities::encode($line,'<>&"'); + $line=~s|\n|
|; + $dump.=$line; + } } } $dump.='';