Well, yes, something like that, or possibly including a bit more of your code in the eval block. You should also probably check the value returned by eval, it might be useful.
I can't test right now anything really similar to your code, but this "several-liner" should give you an idea of how the eval function works:
perl -E '
use strict;
use warnings;
my $output;
say "successful statement";
$output = eval {my $c = 4 + 5;};
printout ($output, $@);
say "division by 0";
$output = eval {my $c = 4/0;};
printout ($output, $@);
say "statement with die";
$output = eval {die "I am dieing\n";};
printout ($output, $@);
sub printout {
my ($out, $diag) = @_;
say $out, "\t", $diag, "\n" if defined $out;
say "\t\t$diag" unless defined $out;
}
'
successful statement
9
division by 0
Illegal division by zero at -e line 12.
statement with die
I am dieing
|