I came across the same problem five years later (although with IO::Uncompress::Gunzip and XML::Parser::Expat). I worked round it by using the parse_start() method of XML::Parser::Expat, which lets you push the data into the parser a line at a time rather than the parser pulling it.
Stephen Turner