Yes, you're absolutely right.
But to me, this problem seems to fall somewhere in the middle regarding how it should be handled... On the one hand, a scalar containing the entire file would make it easier to perform the numerous regex substitutions, while on the other hand, an array would make it easier to to shift off the required items.
I think the point I was trying to make was that an "array" (instead of reading the entire file into a scalar) might be another approach to this problem.
After re-reading the OP's question, I now realize that I pretty much ignored the basic spec for the problem.
Your wish is my commandline.