in reply to How Tied/Tight is it ?

The behaviour makes sense if you remember that *assigning* to a foreach loop index changes the value in the array you are looping over. i.e.
my @squares = (1, 2, 3, 4, 5); # Those aren't squares! foreach $i ( @squares ) { $i = $i * $i; } # Oh yes they are... print join ", ", @squares;
So the underlying data you have named by '$Var2' isn't being set to each value in the loop - instead the name '$Var2' is being used for a different purpose inside the loop - to refer to the elements you loop over.