in reply to
Re: Re: Lexicals in if() scope gotcha!
in thread Lexicals in if() scope gotcha!
They are aliases. If you look, you see that for and foreach have been used differently. This should clarify that.
#!/usr/local/bin/perl5.9.1
print "foreach1...\n";
foreach (Foo->new) {}
print "after foreach\n";
+
print "for...\n";
for (my $object = Foo->new; 1 < 0; ) {}
print "after for\n";
+
print "foreach2...\n";
foreach (my $object = Foo->new; 1 < 0; ) {}
print "after foreach\n";
+
package Foo;
sub new { my $self = bless {},shift; print "CREATED $self\n"; $self }
sub DESTROY { print "DESTROYED $_[0]\n" }
__END__
foreach1...
CREATED Foo=HASH(0x81249dc)
DESTROYED Foo=HASH(0x81249dc)
after foreach
for...
CREATED Foo=HASH(0x8124ac0)
after for
foreach2...
CREATED Foo=HASH(0x81249dc)
after foreach
DESTROYED Foo=HASH(0x81249dc)
DESTROYED Foo=HASH(0x8124ac0)