Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
IO::BufferedSelect(3) User Contributed Perl DocumentationIO::BufferedSelect(3)

NAME
       IO::BufferedSelect - Line-buffered select interface

SYNOPSIS
	   use 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";
	       }
	   }

DESCRIPTION
       The "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
       new ( HANDLES )
	   Create a "BufferedSelect" object for	a set of filehandles.  Note
	   that	because	this class buffers input from these filehandles
	   internally, you should only use the "BufferedSelect"	object for
	   reading from	them (you shouldn't read from them directly or pass
	   them	to other BufferedSelect	instances).

METHODS
       read_line
       read_line ($timeout)
       read_line ($timeout, @handles)
	   Block until a line is available on one of the filehandles.  If
	   $timeout is "undef",	it blocks indefinitely;	otherwise, it returns
	   after at most $timeout seconds.

	   If @handles is specified, then only these filehandles will be
	   considered; otherwise, it will use all filehandles passed to	the
	   constructor.

	   Returns a list of pairs "[$fh,A $line]", where $fh is a filehandle
	   and $line is	the line that was read (including the newline, ala
	   "readline").	 If the	filehandle reached EOF,	then $line will	be
	   undef.  Note	that "reached EOF" is to be interpreted	in the
	   buffered sense: if a	filehandle is at EOF but there are newline-
	   terminated lines in "BufferedSelect"'s buffer, "read_line" will
	   continue to return lines until the buffer is	empty.

SEE ALSO
       IO::Select

AUTHOR
       Antal Novak, <afn@cpan.org>

COPYRIGHT AND LICENSE
       Copyright (C) 2007 by Antal Novak

       This 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.

perl v5.32.0			  2007-03-13		 IO::BufferedSelect(3)

NAME | SYNOPSIS | DESCRIPTION | CONSTRUCTOR | METHODS | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=IO::BufferedSelect&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help