I was just surprised that this wasn't as easy / neat to do as I expected. I'm quite pleased with my original map one liner, but nobody has really commented on whether it was really all that bad.
OK, I'll comment on that. In my mind
map is a way to go from X to f(X) for a bunch of X's. If f(X) doesn't depend on X, it makes my brain go tilt a bit, but I can probably get used to it. Hence, I'll almost certainly try a different solution before I accept the void-arg map alternative.
Hmm. What you really probably have is a state machine. I could see a big Switch statement based on state (reading header A, reading header B, in the body) with eof(IN) at the top, and if eof is detected while in header A or B, then carp out.
See, I get worried about when the unusual happens. Maybe it's just my 30 years
of programming, but any time I see someone write a "read 10 lines here" loop,
I think "what if there aren't 10 lines?". That's what makes me good at QA. :)
-- Randal L. Schwartz, Perl hacker