There might be a completely different solution. Using Sys::Mmap, you can map the entire file to a single string, and then brute-force through that string with something like while ($string =~ m/.../g) {...} (like you hinted in your post).
However, there are some caveats:
In reply to Re: Parsing 12GB Entourage database in pieces...
by betterworld
in thread Parsing 12GB Entourage database in pieces...
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |