perl - How is the glob iterator stored between function calls? -


I made the following comment on my reply:

glob () or call the call function It works fine when not inside, it can be said repeatedly and works as expected. So two of the above files are present. The function failure is called the fourth time the globe (main, function, main = success). The function is not within the behavior function within the function. Responded

:

There is no difference in function, but the source of each globe operator has a different iterator, so the problem will not be long Unless you loop back in some way

In the following code, why / where globe operator is saved between calls? Why is not it going out of the realm? I know what this is doing, but it can not see how it is behaving in memory.

  sub-in_function {my $ file = shift; Globe ($ file) or die ("$ file file not found \ n"); #This name fails a second time)  

stored in this anti-interpreter hash Opcode's address ( MY_CXT.x_GLOB_ENTRIES in ext / file-glob / glob.xsglob.xs ).

The fact is that it has been closed. The address of the OPEN will be different in two instances of the source oprode.

  $ perl -E'say "" .glob ("{a, b}") for 1, 2.2, 'a b $ perl -E'say "" .glob ( "{A, b}"); "". Globe ("{a, b}"); The fact is that this counter interpreter means that each thread has its own iterator for a given example of opoad.  
  $ perl -Mthreads -e 'subf (say) ".. Globe (" {a, b} ");} (F) for 1..2;' A B $ perl -Mthreads -E 'subf {say "". Globes ("{a, b}")}} Async {f ()} - & gt; Includes for 1..2;' A a  

Comments