version 1.1, 2002/03/27 18:32:57
|
version 1.5, 2002/10/22 15:59:44
|
Line 2 package Safe;
|
Line 2 package Safe;
|
|
|
use 5.003_11; |
use 5.003_11; |
use strict; |
use strict; |
|
use vars qw($VERSION); |
|
|
our $VERSION = "2.061"; |
$VERSION = "2.062"; |
|
|
use Carp; |
use Carp; |
|
|
Line 213 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 227 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); |
} |
} |
|
|