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


In reply to Problems with Safe compartment reval parameters by winneymj

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.