=cut
sub recall {
- my $wrap = eval { wrap shift };
- croak _clean_msg $@ if $@;
- return $wrap->(@_);
+ my $name = shift;
+
+ my ($wrap, $err);
+ {
+ local $@;
+ $wrap = eval { wrap $name };
+ $err = $@;
+ }
+ croak _clean_msg $err if $err;
+
+ goto $wrap;
}
=head1 EXPORT