On Tue, May 27, 2003 at 06:19:05PM +0200, Matthias Bauer wrote: > Hi everybody, > why is it that the following piece of code prints > three _different_ strings (in Perl 5.8)? > > ------8<------------------------ > sub bla() { > for my $i ( reverse 0 .. 5 ) { > $i = $i + 1; > print $i; > } > print "\n"; > } > > bla(); > bla(); > bla(); > ------>8------------------------ > > It seems as if the array created to hold the > returned AV of ''reverse 0..5`` is somehow > re--used in later invocations of blah(). > Bug or feature or programming error?
Known bug. You should get a "modification of read-only value" error, like you get if you do 'reverse 0, 1, 2, 3, 4, 5'. Note the differences if you replace .. with a list, and whether or not you use reverse or not: reverse 0 .. 5 654321 765432 876543 0 .. 5 123456 123456 123456 reverse 0, 1, 2, 3, 4, 5 Modification of a read-only value attempted 0, 1, 2, 3, 4, 5 Modification of a read-only value attempted Abigail