Doing your own buffering probably won't help you, since Perl already does that. However, all is not lost - you can beat Perl if you're willing to code in C. For example, check out
Text::CSV_XS - it beats all the other CSV parsers by doing low-level IO and parsing with a hand-coded state-machine. If your data is CSV or similar you might able to use it directly. If not you might be able to borrow the technique and adapt it to your format.
-sam