version 1.46, 2004/03/31 05:24:00
|
version 1.47, 2004/07/13 19:12:46
|
Line 46 while (!$_LONCAPA_INTERNAL_oldexpression
|
Line 46 while (!$_LONCAPA_INTERNAL_oldexpression
|
# only match the above if there is not { [ ( coming up |
# only match the above if there is not { [ ( coming up |
# Why? (I.e. this fails &a(1)[2] |
# 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 $result; |
|
while (1) { |
|
{ |
|
use strict; |
|
no strict "vars"; |
|
if (eval(defined(eval($__LC__a.$__LC__b)))) { |
|
$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($result)) { |
|
$result=$__LC__prefix.$__LC__a.$__LC__b.$__LC__c; |
|
} |
|
$result; |
|
/sexg; |
if (scalar(values(%_LONCAPA_INTERNAL_oldexpressions))>10) {last;} |
if (scalar(values(%_LONCAPA_INTERNAL_oldexpressions))>10) {last;} |
} |
} |
ENDEVALUATE |
ENDEVALUATE |
Line 63 sub evaluate {
|
Line 82 sub evaluate {
|
die("timeout"); |
die("timeout"); |
}; |
}; |
my $innererror; |
my $innererror; |
|
$safeeval->permit("require"); |
eval { |
eval { |
alarm($Apache::lonnet::perlvar{'lonScriptTimeout'}); |
alarm($Apache::lonnet::perlvar{'lonScriptTimeout'}); |
$safeeval->reval('{'.$decls.';$_=<<\'EXPRESSION\';'."\n".$expression. |
$safeeval->reval('{'.$decls.';$_=<<\'EXPRESSION\';'."\n".$expression. |
Line 70 sub evaluate {
|
Line 90 sub evaluate {
|
$innererror=$@; |
$innererror=$@; |
alarm(0); |
alarm(0); |
}; |
}; |
|
$safeeval->deny("require"); |
my $error=$@; |
my $error=$@; |
if ($error eq '' && $innererror eq '' && !$Apache::run::timeout) { |
if ($error eq '' && $innererror eq '' && !$Apache::run::timeout) { |
$result = $safeeval->reval('return $_;'); |
$result = $safeeval->reval('return $_;'); |