in reply to unreadline function?

There is no "peek", per se. I see two options for you - neither of which is probably very appealing.

The easiest way is to create a subclass of IO::File that would cache the next line for you. So, it would always be a line ahead of where you are. Then, you would just treat that object as your file and add a call to $file->peek whenever you needed to peek at the next line.

The better way, in my humble opinion, is to rewrite your main loop as such:

  1. Read the line.
  2. See if it's part of the same record or not.
    1. If it isn't, then deal with the end of the record (pushing it onto a global variable or whatever)
    2. Clear the temporary variables used for building a given record
  3. Handle the line as if the above handling wasn't there.

------
We are the carpenters and bricklayers of the Information Age.

Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.