Yes, you use peek() to know whether or not it is time to read(). The difference between peek() and read() is that read() removes from the socket the data that was read, where peek() simply reports what is there without altering it. This allows you to peek() repeatedly until the full contents of a message are available, at which time you read() to retrieve the message and remove it from the socket buffer.

Also, I think your syntax for peek() should look more like your syntax for sysread(...) (I'm not overly familiar with sockets in perl and you seem capable of tracking the details down, so I'll leave that to you.) I'd prefer the cpan module be more explicit about the arguments and return value, but evidently that's just me.

In reply to Re^7: Waiting for input, without sleep by jrsimmon
in thread Waiting for input, without sleep by Trihedralguy

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.