in reply to Re^3: How do closures and variable scope (my,our,local) interact in perl?
in thread How do closures and variable scope (my,our,local) interact in perl?

You'll note that I didn't use the for my version. I feel that for $name should behave identically whether $name is a lexical or a global variable, as the same variable is visible outside the for block in both cases. The two variables live in two separate namespaces, which is the likely cause for the phenomenon we see, but as their visibility is identical, that shouldn't affect behaviour. The "localising" still shouldn't affect lexical variables in a way different to global variables, but it seems to do. This might warrant some mention in the documentation.

Replies are listed 'Best First'.
Re^5: How do closures and variable scope (my,our,local) interact in perl?
by LanX (Saint) on Jun 16, 2009 at 16:51 UTC
    I know, just wanted to simplify the case before entering the mentioned "extra complexity".

    There are some extra phenomenons complicating and maybe explaining it ...

    1. The loop-variable is an alias to the current list element

    2. Normally there is no local() for lexvars, maybe they needed to implement a work-around.

    My guess is, the programmers decided to implement this "local(lexical loop-var)" by associating it temporarily to the loops lexpad.

    This might warrant some mention in the documentation.

    definitely!

    Cheers Rolf

    UPDATE: deleted wrong passage...