If you do a search on CLPM you'll find this comes up semi-regularly, and I bet there are even a few threads here at the monastery too.

Contrary to the many opinions stated here it is actually NOT localizing the variable. This should be obvious because strict doesnt get mad, and there is no curly brace to indicate a scoped block, and furthermore modifiers operate in the scope they are used and do not create a scope. Instead its reiniting it each time.

What happens is that on the last call to the for (the one where the for has now exhausted the array or more generally evaluated as finished) the my part of the statement is STILL being executed, and thus causing the variable to go to undef.

BTW: Sean in future try to be a bit more careful about the term "null", its meaning is overloaded in the CS world and can lead to confusion. Perl has no "NULL" but it does have undef and no they arent the same.

HTH, and when you do your search youll see that I asked this question a long time ago on CLPM too. :-)

Oh and the moral is that you shouldnt mix lexical declaration with modifiers.

Yves / DeMerphq
---
Writing a good benchmark isnt as easy as it might look.


In reply to Re: 'my' headache...why doesn't this work? by demerphq
in thread 'my' headache...why doesn't this work? by S_Shrum

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.