##
my $d= 0;
eval 1/$d;
####
my $code;
my $ok= eval sprintf q{
$code= sub {
%s
};
1
}, $string;
if(! $ok) {
my $err= $@;
warn "Compile error on $string: $err";
};
$ok= eval {
$code->();
1;
};
if( ! $ok) {
my $err= $@;
warn "Runtime error on $string: $err";
};