Hi,

I might be totally confusing myself, but I do have problems with the $@
variable inside of a Safe compartment inside of an Apache modperl
module.

The following subroutine returns "Oops Illegal division by zero ..."
when called from a standalone program, and "No problem" when called
inside a modperl module:


sub initsheet {
    my $safeeval = new Safe(shift);
    $safeeval->permit("entereval");
    $safeeval->share('$@');

my $stuff=(<<'ENDSTUFF');
my $a=5;
my $b=0;

my $c=eval '$a/$b';
if ($@) {
    return 'Oops '.$@;
} else {
    return 'No problem!';
}
ENDSTUFF

    return $safeeval->reval($stuff);
}

In spite of the division by zero in the $c=eval ... statement, $@ is not
set when inside of modperl.

BTW, the $safeeval->share('$@') was necessary to get this to work at
all, even as standalone. Now, maybe I need to share something else when
inside modperl?

Anybody any ideas what's going on?

THANKS!

- Gerd.

Reply via email to