1: doing like in Registry:
my $eval = join(
'',
'package ',
$package,
';use Apache qw(exit);',
'sub handler {',
$sub,
"\n}", # last line comment without newline?
);
compile($eval);
sub compile {
my $eval = shift;
Apache->untaint($eval);
eval $eval;
}
====== or
2:
my $eval = join(
'',
'package ',
$package,
';use Apache qw(exit);',
$sub
);
precompile($eval);
sub precompile {
my $eval = shift;
...
eval("\$func = sub {" . $eval . "};");
return $func
}
======= and calling it later
1:
my $cv = \&{"$package\::handler"};
eval { &{$cv}($r, @_) } if $r->seqno;
2:
$func = $SomePkgCache{..
&{$func};
-vlad