From: Vincent Pit Date: Thu, 25 Aug 2011 09:36:56 +0000 (+0200) Subject: Clean up recall() X-Git-Tag: v0.10~10 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FSub-Prototype-Util.git;a=commitdiff_plain;h=1d86cd887b8dbb41650915d7e60dcc077bd2ad35 Clean up recall() --- 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