in reply to Re^3: unbuffered read from socket
in thread unbuffered read from socket

Good point Errto, you drove me to dig out the Perl Cookbook recipe 7.23, which, to my horror, also does a sysread() of one character at a time (and with no performance caveat). I wonder if anyone has encapsulated a nice clean buffering scheme to work in harness with select() and sysread()? Update: quick look on CPAN found nothing, but Lincoln Stein's book "Network Programming with Perl" (Chapter 13) features an IO::Getline module that seems to be what I'm after, namely "line-oriented reading from sockets/handles with access to internal buffer".

One important point made in this recipe is that you must use unbuffered sysread() (and not the buffered I/O functions) with select() because select's response does not reflect user level buffering.

Update: Found this interesting bit of history from comp.lang.perl.moderated (15-Jan-1999) describing a mythical sysreadline() function requested by Larry but, alas, never implemented.

Replies are listed 'Best First'.
Re^5: unbuffered read from socket
by Errto (Vicar) on Dec 29, 2004 at 05:03 UTC
    It certainly sounds like the sort of thing you'd want a generic module for. That said, in this specific case Net::IRC seems to already exist. Actually, I'll mention that in my reply node in case the OP doesn't notice this one.
Re^5: unbuffered read from socket
by Forsaken (Friar) on Dec 29, 2004 at 11:18 UTC
    my my, nice piece of history there indeed. glad i'm not the only one to think this is cumbersome. if even Larry agrees... :-) I have yet to find this illusive IO::Getline anywhere, do let me know if if turns up somewhere please.