in reply to Inconsistent for the sake of convenience

when you need inconsistency to achieve convenience, it might mean that you could have a better model.

For example the while clause could better be written as

for (<$filehandle>) { ... }

And it would work without any special magic. People don't do this, because it slurps the while file into memory. But that could be changed. For example by making <$filehandle> return a lazy list, or an iterator that for knows how to iterate.