Your second "anomaly" has to do with
foreach loop aliasing. Particularly:
If any element of LIST is an lvalue, you can modify it by modifying VAR inside the loop. Conversely, if any element of LIST is NOT an lvalue, any attempt to modify that element will fail. In other words, the foreach loop index variable is an implicit alias for each item in the list that you're looping over.
So:
my @a = (1,2,3,4);
for my $i (@a) { $i = 5 };
print "@a"; # prints: 5 5 5 5
while:
for my $i (1,2,3,4) { $i = 5 };
errors out with:
Modification of a read-only value attempted ...
I think what's happening with your 3 examples of the second anomaly is this:
- foreach my $letter ('a' .. 'c', 'd' .. 'f') creates a list of lvalues due to the comma operator in the middle. Perhaps this is done only once at compile time? which explains the persistence.
- foreach my $letter ('a' .. 'f') has been optimized as a counting loop, so the range operator does NOT generate a list.
- foreach my $letter (@letters) always has @letters redefined right before the loop, so each call to letters() yields consistent results.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.