I would agree that the comma operator can produce absurd, nutty code like:

while (expr1, expr2, expr3, expr4, expr5, expr6, expr7)

The ONLY time I use the comma operator is in the following way:

while ((print prompt), test-response-to-prompt)

How is this "opaque"?

My code prepends a single print statement in the "while", a very simple thing who's return value is ignored. Without the comma operator, I would have to prompt before the loop and then prompt before the next loop. This can lead to many prompt statements or calls to a prompt subroutine for each error condition instead of just "next;".

The print statement at the beginning has no effect upon the test-response-to-prompt code. Use of the comma operator avoids 2 or more other statements.

I avoid while(1) except in the case of servers. Those loops never exit. I consider your while(1) with multiple returns within the FOREVER statement (a typical #define for while (1)or for (;;)) to be confusing. You have to read the code to figure out what the "end of loop" condition really is.

I argue that it is better to put the "end of loop" condition in the "while" or "for" loop, right at the top rather than "burying it" within a FOREVER loop.


In reply to Re^3: Use of uninitialized value in addition by Marshall
in thread Use of uninitialized value in addition by Solarplight

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.