in reply to sysread and syswrite in tcp sockets

It would be nice if the perl docs on sysread were clearer on the question of partial reads. The word "Attempts" is inadequate: of *course* sysread will *attempt* to read. After all, if the file contains fewer bytes than requested, or if the file is a terminal or some such, then an *attempt* to read more bytes than are available will result in a partial read.

But the perl docs should be clearer about whether sysread will ever read fewer bytes than requested in cases where those bytes *are* available to be read. As is, a cautious programmer must assume that partial reads could happen for no apparent reason, and from the above discussion this sounds like it is the case. But it would be nice if the documentation made this clear, both to help those who might not notice this subtle case and to avoid wasting the time of those who do notice and spend time trying to find the answer in the docs.

Anybody know where to make this suggestion? I didn't see any indication on the perlfunc page.

  • Comment on Re: sysread and syswrite in tcp sockets

Replies are listed 'Best First'.
Re^2: sysread and syswrite in tcp sockets
by ikegami (Patriarch) on Dec 08, 2009 at 00:21 UTC

    But the perl docs should be clearer about whether sysread will ever read fewer bytes than requested in cases where those bytes *are* available to be read.

    First of all, I don't see how the answer could be anything other they yes. There are countless layers involved. Presumably, one of them could always provide more bytes as long as the handle is still open.

    In short, why does it matter when more data will come? You've got data to process.

Re^2: sysread and syswrite in tcp sockets
by salva (Canon) on Dec 08, 2009 at 09:00 UTC