The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

IO::Handle::Iterator - Iterator based read handle

SYNOPSIS

IO::Handle::Iterator->new(sub {
    return $next_line; # or undef on eof
});

DESCRIPTION

This class lets you define a read handle with a few fallback methods (like read) using a single callback that behaves like getline.

This is similar but much simpler than:

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

The reason being that the IO::Handle::Prototype::Fallback implementation will try its very best to behave correctly (i.e. respect the value of $/), whereas this implementation assumes it's fine to return things that aren't exactly lines from getline, so the values are just passed through.

READ BUFFERING

When a method that requires buffering is invoked the handle is reblessed to a subclass which handles buffering.

Calling getline again on this object will return the value of the buffer and return to the normal iterator class.