GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  IO::BUFFEREDSELECT (3)

.ds Aq ’

NAME

IO::BufferedSelect - Line-buffered select interface

CONTENTS

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 <B>onlyB> 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, $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.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 IO::BUFFEREDSELECT (3) 2007-03-13

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.