|
NAMEIO::BufferedSelect - Line-buffered select interfaceSYNOPSISuse IO::BufferedSelect; my $bs = new BufferedSelect($fh1, $fh2); while(1) { my @ready = $bs->read_line(); foreach(@ready) { my ($fh, $line) = @$_; my $fh_name = ($fh == $fh1 ? "fh1" : "fh2"); print "$fh_name: $line"; } } DESCRIPTIONThe "select" system call (and the "IO::Select" interface) allows us to process multiple streams simultaneously, blocking until one or more of them is ready for reading or writing. Unfortunately, this requires us to use "sysread" and "syswrite" rather than Perl's buffered I/O functions. In the case of reading, there are two issues with combining "select" with "readline": (1) "select" might block but the data we want is already in Perl's input buffer, ready to be slurped in by "readline"; and (2) "select" might indicate that data is available, but "readline" will block because there isn't a full $/-terminated line available.The purpose of this module is to implement a buffered version of the "select" interface that operates on lines, rather than characters. Given a set of filehandles, it will block until a full line is available on one or more of them. Note that this module is currently limited, in that (1) it only does "select" for readability, not writability or exceptions; and (2) it does not support arbitrary line separators ($/): lines must be delimited by newlines. CONSTRUCTOR
METHODS
SEE ALSOIO::SelectAUTHORAntal Novak, <afn@cpan.org>COPYRIGHT AND LICENSECopyright (C) 2007 by Antal NovakThis library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
Visit the GSP FreeBSD Man Page Interface. |