The doc for that module says it supports a return from the "try" block, doesn't mention the "catch" block - you could try setting a flag inside the catch (defined at the sub level) and return if that flag is set e.g.
sub foo {
my $error = 0;
try {
die;
}
catch {
print "error\n";
$error = 1;
}
return if $error;
print "no_err\n";
}
I agree from a program flow point-of-view, it would be better if the return inside the catch worked as expected - it may be that the "catch" is itself similar to a sub, and the return is returning from that?