http://qs1969.pair.com?node_id=1198247


in reply to Just before subroutine returns

Hello solegaonkar,

Try the End module. Here’s a trivial example:

use strict; use warnings; use End; foo(4); foo(6); sub foo { my ($n) = @_; my $x = end { print "\$n = >$n<\n" }; return 1 if $n < 5; $n *= 52; return $n; }

Output:

16:31 >perl 1810_SoPW.pl $n = >4< $n = >312< 16:31 >

Note that the assignment to $x is needed here, because of the way End works, even though the value of $x isn’t used.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: Just before subroutine returns
by karlgoethebier (Abbot) on Aug 29, 2017 at 18:21 UTC

    Even the command line to install it is pure fun:

    karls-mac-mini:monks karl$ cpanm End --> Working on End

    Thanks and regards, Karl

    «The Crux of the Biscuit is the Apostrophe»

    perl -MCrypt::CBC -E 'say Crypt::CBC->new(-key=>'kgb',-cipher=>"Blowfish")->decrypt_hex($ENV{KARL});'Help

Re^2: Just before subroutine returns
by solegaonkar (Beadle) on Aug 29, 2017 at 06:58 UTC
    Yes! That worked.. Thanks for your help!

      If you need to know which return returned, you might be able to wrap return using Keyword::Declare or Filter::Simple.

      Be warned: These are very powerful, therefore dangerous to use.

        I'd recommend Keyword::Simple , but for completeness: a sub can be left without return.

        Possibilities include:

        • implicit return at body's end
        • goto label in caller chain
        • goto &sub
        • die exception

        Cheers Rolf
        (addicted to the Perl Programming Language and ☆☆☆☆ :)
        Je suis Charlie!