Actually, for creates two lexical scopes. One for the entire statement, and one of the block body.
You've already demonstrated the second. Here's a demonstration of the first:
>perl -e"use strict; for (my @x) { } @x" Global symbol "@x" requires explicit package name at -e line 1. Execution of -e aborted due to compilation errors.
it seems like you don't "leave" the scope in which @a was delcared,
It's pretty clear to me the curly is the end of the scope, and you do indeed reach it.
Also, I still don't understand why the 'wrong' version creates the data structure that it does. Any thoughts on that one?
my @a; push @container, \@a; push @container, \@a;
Isn't it clear that it puts two references to the same variable into @container? Why do you think your loop is different?
In reply to Re^3: Scope and references
by ikegami
in thread Scope and references
by {}think
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |