in reply to readline error behavior

First of all, the line:
my $line = $self->SUPER::getline() || return undef;
has a problem; what if $self->SUPER::getline() returns "0"? Or ""? (which may happen if you don't subclass from IO::Handle directly, or if you are working with IO layers).

As for what to return if the line is illformatted, you can do several things:

Anyway, you need to return something special, which you document well, and it's up the caller to inspect your return value and handle appropriately.

I probably would use the first suggestion.

Abigail