use Safe; my $safe = Safe->new('Safe::Compartment'); $safe->permit(Opcode::full_opset); for my $module (qw/Data::Dumper/) { (my $file = "$module.pm") =~ s!::!/!g; $safe->share('*' . $module . '::'); package Safe::Compartment; require $file; $module->import(); } $safe->reval(qq{ use Data::Dumper; # Already done, so not needed. print Dumper([ 1..10 ]), "\n"; }); warn $@ if $@;