---
name: "IO::Handle::Iterator"
section: "3pm"
platform: "linux"
package: "libio-handle-util-perl"
version: "0.02-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/IO::Handle::Iterator"
---

# IO::Handle::Iterator(3pm)

Iterator based read handle

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