winneymj has asked for the wisdom of the Perl Monks concerning the following question:
Hi,
I am fairly new to Perl and have been trying to use the Safe module to execute a perl script in a restricted compartment. There does not seem to be many (if any) examples of passing and retrieving parameters from the calling perl into the compartment. Anyhow I am having problems accessing variables passed into the compartment using the share method. My sample code is shown below and is a CGI script running through apache.
#!/usr/bin/perl -w use Safe; print "Content-type: text/html\n\n"; my %params = ( key1 => 'value1', key2 => 'value2', key3 => 'value3', ); # Run as a normal eval my $script = 'return $params{\'key1\'}'; my $ret = eval($script); warn $@ if $@; print "ret=$ret<br>"; # Now run the script in a safe compartment my $compartment = new Safe(); $compartment->share('%params'); $ret = $compartment->reval($script); print "ret=$ret<br>";
The output in the browser window is shown below:
ret=value1 ret=
Showing that the compartment does not return the same result as the normal eval. Does anyone have any idea why this does not work.
Any help is appreciated
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Problems with Safe compartment reval parameters
by ikegami (Patriarch) on Sep 26, 2009 at 02:34 UTC | |
by winneymj (Initiate) on Sep 28, 2009 at 02:30 UTC | |
by GrandFather (Saint) on Sep 28, 2009 at 02:44 UTC | |
by ikegami (Patriarch) on Sep 28, 2009 at 02:53 UTC |