in reply to Re^5: File-scoped lexicals and eval scope?
in thread File-scoped lexicals and eval scope?

Ah. I wasn't suggesting my $value if 0;, nor would that work to make the sub close over the outer $value. I was suggesting $value if 0;, to incorporate a reference to the outer $value into the sub, while avoiding the "Useless use of a variable in void context" warning you'd get from a bare $value;.

Replies are listed 'Best First'.
Re^7: File-scoped lexicals and eval scope?
by jbert (Priest) on Nov 12, 2007 at 08:08 UTC
    Ah....sorry. Stupid of me.

    That does raise an interesting question as to what code a perl optimiser would be allowed to remove. You'd really like the optimiser to be able to nuke code like this:

    while (tight_loop) { write_to_log("Some msg involving $somevar") if REALLY_HEAVY_DEBUG; some_more_code(); }
    if the constant evaluated to 0. I guess if $somevar was relevant to the debugging then it would be closed over anyway, but that is a bit too subtle.
      The optimiser does do that, leaving only an empty statement, but at a later point than the closure is established.