Rod Za wrote: > Hi, > > I have a doubt. If i create an array inside a foreach loop using > `my`, is this array recreated every time or every time the loop pass > by i got a new array?
Yes, it's a new array. Try this: for (1 .. 5) { my @arr = ($_) x $_; print [EMAIL PROTECTED], " = @arr\n"; } Output: ARRAY(0x81017e4) = 1 ARRAY(0x81017e4) = 2 2 ARRAY(0x81017e4) = 3 3 3 ARRAY(0x81017e4) = 4 4 4 4 ARRAY(0x81017e4) = 5 5 5 5 5 The address of the array never changes, so it looks like the same array. However, if you save a reference to the array inside the loop, watch what happens: my @outer; for (1 .. 5) { my @arr = ($_) x $_; print [EMAIL PROTECTED], " = @arr\n"; push @outer, [EMAIL PROTECTED]; } Output: ARRAY(0x8103418) = 1 ARRAY(0x80f827c) = 2 2 ARRAY(0x8103490) = 3 3 3 ARRAY(0x81034cc) = 4 4 4 4 ARRAY(0x8103514) = 5 5 5 5 5 Here it's proven that you create a new array each time. If you never take a reference to the "my" variable that lives beyond the scope of the loop, Perl can reuse the old array, and just put new contents into it. I'm not sure if down in the guts of perl it's actually releasing and then recreating the array or whether it's just reusing the old array. Really doesn't matter; the result is you always get a different array and they will be kept separate if necessary. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>