version 1.4, 2002/10/17 19:27:45
|
version 1.5, 2002/10/22 15:59:44
|
Line 214 sub reval {
|
Line 214 sub reval {
|
# Create anon sub ref in root of compartment. |
# Create anon sub ref in root of compartment. |
# Uses a closure (on $expr) to pass in the code to be executed. |
# Uses a closure (on $expr) to pass in the code to be executed. |
# (eval on one line to keep line numbers as expected by caller) |
# (eval on one line to keep line numbers as expected by caller) |
my $evalcode = sprintf('package %s; sub { @_ = (); eval $__SAFE_LOCAL_expr; }', $root); |
my $evalcode = sprintf('package %s; sub { @_ = (\'\'); eval $__SAFE_LOCAL_expr; }', $root); |
my $evalsub; |
my $evalsub; |
|
|
if ($strict) { use strict; $evalsub = eval $evalcode; } |
if ($strict) { use strict; $evalsub = eval $evalcode; } |
Line 228 sub rdo {
|
Line 228 sub rdo {
|
my $root = $obj->{Root}; |
my $root = $obj->{Root}; |
|
|
my $evalsub = eval |
my $evalsub = eval |
sprintf('package %s; sub { @_ = (); do $file }', $root); |
sprintf('package %s; sub { @_ = (\'\'); do $file }', $root); |
return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub); |
return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub); |
} |
} |
|
|