The example you give looks like an "mbox" format message file. Parsing such files can be a bit tricky. I would look for a module to parse the message file. While I haven't used it, you might consider Mail::Box-Overview. Otherwise I suggest a search of CPAN for mailbox.
If you are getting offsets to build an index to solve performance problems accessing large "mbox" style mail files, then I suggest you find an existing module or application for doing so or change the format entirely. It might be best to move the messages into a database, for example. This isn't a new problem and there are working solutions available (i.e. existing MUAs and MTAs). You don't need to re-invent the wheel.