Provided by: libio-handle-util-perl_0.02-1_all bug

NAME

       IO::Handle::Prototype::Fallback - Create IO::Handle like objects using a set of callbacks.

SYNOPSIS

           my $fh = IO::Handle::Prototype::Fallback->new(
               getline => sub {
                   my $fh = shift;

                   ...
               },
           );

DESCRIPTION

       This class provides a way to define a filehandle based on callbacks.

       Fallback implementations are provided to the extent possible based on the provided
       callbacks, for both writing and reading.

SPECIAL CALLBACKS

       This class provides two additional methods on top of IO::Handle, designed to let you
       implement things with a minimal amount of baggage.

       The fallback methods are all best implemented using these, though these can be implemented
       in terms of Perl's standard methods too.

       However, to provide the most consistent semantics, it's better to do this:

           IO::Handle::Prototype::Fallback->new(
               __read => sub {
                   shift @array;
               },
           );

       Than this:

           IO::Handle::Prototype::Fallback->new(
               getline => sub {
                   shift @array;
               },
           );

       Because the fallback implementation of "getline" implements all of the extra crap you'd
       need to handle to have a fully featured implementation.

       __read
           Return a chunk of data of any size (could use $/ or not, it depends on you, unlike
           "getline" which probably should respect the value of $/).

           This avoids the annoying "substr" stuff you need to do with "read".

       __write $string
           Write out a string.

           This is like a simplified "print", which can disregard $, and "$\" as well as multiple
           argument forms, and does not have the extra "substr" annoyance of "write" or
           "syswrite".

WRAPPING

       If you provide a single reading related callback ("__read", "getline" or "read") then your
       callback will be used to implement all of the other reading primitives using a string
       buffer.

       These implementations handle $/ in all forms ("undef", ref to number and string), all the
       funny calling conventions for "read", etc.

FALLBACKS

       Any callback that can be defined purely in terms of other callbacks in a way will be
       added. For instance "getc" can be implemented in terms of "read", "say" can be implemented
       in terms of "print", "print" can be implemented in terms of "write", "write" can be
       implemented in terms of "print", etc.

       None of these require special wrapping and will always be added if their dependencies are
       present.

GLOB OVERLOADING

       When overloaded as a glob a tied handle will be returned. This allows you to use the
       handle in Perl's IO builtins. For instance:

           my $line = <$fh>

       will not call the "getline" method natively, but the tied interface arranges for that to
       happen.