X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FSub-Prototype-Util.git;a=blobdiff_plain;f=lib%2FSub%2FPrototype%2FUtil.pm;h=a580cc16343103d061e3b8bc8c2a9e81debdb5d9;hp=c06a913290c7fcac0f4e4d576195b017d3940299;hb=1d86cd887b8dbb41650915d7e60dcc077bd2ad35;hpb=dc8381d3afc8122719bdacce75ee5c2d25c27d1d diff --git a/lib/Sub/Prototype/Util.pm b/lib/Sub/Prototype/Util.pm index c06a913..a580cc1 100644 --- a/lib/Sub/Prototype/Util.pm +++ b/lib/Sub/Prototype/Util.pm @@ -282,9 +282,17 @@ If you plan to recall several times, consider using L instead. =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