in reply to Re^5: How to enforce void context in Reply?
in thread How to enforce void context in Reply?

What need for anything else?

True, but it can still happen by accident that a sub is executed in non-void context when the programmer wanted it in void context, as shown above in sub calls_it_1. Also docdurdee mentioned a REPL, so my guess would be that the REPL puts every line entered at the prompt into some non-void context.

Replies are listed 'Best First'.
Re^7: How to enforce void context in Reply?
by AnomalousMonk (Archbishop) on May 19, 2015 at 15:25 UTC

    All the more reason to avoid implicit return statements.

    sub Sa { foo(); # implicit return: foo() called in Sa() invocation context +. } sub Sb { return foo(); # explicit return: foo() called in Sb() invocation +context. } sub Sc { foo(); # foo() called in void context. no question. return; }
    IMHO, the Sa() form should always be avoided.

    And also IMH (but very emphatic!) O, one should certainly avoid weird "implicit return of 1" statements which are no more than maintainence pitfalls.


    Give a man a fish:  <%-(-(-(-<

      IMHO, the Sa() form should always be avoided.

      Why? I can't think of a single problem that solves.

        I think TheDamian's PBP has a convincing discussion of the evils of the implicit return. The chief benefits (IMHO) of an explicit return are improved clarity and maintainability of code.


        Give a man a fish:  <%-(-(-(-<

      :) I missed it too but Reply is reply - read, eval, print, loop, yay!

      1; is shorter than return;