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


in reply to Context propagation into subs and evals

In implicit_returns and no_implicit_returns, did you mean to have an explicit return as in return tst_context() when $_[0] is true?

Replies are listed 'Best First'.
Re^2: Context propagation into subs and evals
by LanX (Saint) on Feb 20, 2012 at 22:10 UTC
    implicit_returns() has two implicit returns, because the calls to tst_context() could be last statement of the sub.

    Since no_implicit_return() has an explicit return at the end which must be passed, disabling the implicit returns.

    look here

    sub tst { 5 } sub tst { return 5 }
    Both functions are equivalent, but in the latter the return is explicit.

    Cheers Rolf

      Right, I forgot about the return; so I've striked off my question about no_implicit_return.

      As for implicit_return, I guess I got confused as to the purpose of the if statement. Both the true and false code paths lead to an implicit return of the call to tst_context. Me thinks why bother having the if at all? :-)
        The if shows that multiple statements can be returned implicitly and it's not necessarily the undermost statement.

        If you know of a better example illustrating this - at the same time non-trivial and not complex - I'm open for suggestions. :)

        There is a whole bunch of "Flow-Control-Statements" which could play a role here.

        Cheers Rolf