You claim that there is no documentation that covers this form. But perlop documents its existence quite clearly. The same place also clearly documents that you should expect no surprising language semantics from the existence of the optimized version. If you know what the loop is supposed to do, it will still do that. Just using less memory than you thought it would.

However even if you're unaware of that documentation, it should be irrelevant. Any program that ran before it existed will run after, and should give the same output.

As for people who micro-optimize the wrong way without benchmarking, what can I say? My philosophy has been to make things clean and not worry about performance until I have to. So while I'm pleased by the optimization, it doesn't change my default coding style at all.

On the style difference, there is no point in having that argument with me. I always spell it "for". Anyone who has to deal with Perl code in the while will encounter that spelling, and I see no significant benefit in avoiding it. Sure, if you are training beginners in a code base that is careful to always spell them differently, there could be a small learning benefit. (I'm not saying that there is, just that there could be. I have no data either way.) But you're doing your newbies no great favors, and it will annoy experienced people. I would follow such a style rule, but I would dislike it.

However if you were having the argument with me, I wouldn't think that the existence of a minor optimization that programmers are not supposed to be aware of would change my opinion. And, in fact, I believe that your discussion was going in circles in part because I doubt that Argel knew about the optimization. Therefore you were drawing an apparently arbitrary distinction between two different examples of the list form.


In reply to Re^17: eof not recognised when applying diamond operator to invocation arguments? by tilly
in thread eof not recognised when applying diamond operator to invocation arguments? by pat_mc

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.