in reply to XML::Parser breaks on

This is a documented behaviour of XML::Parser. Actually XML::Parser documents the fact that this "can" happen. It actually happens for every entity, line break and expat input buffer boundary crossed. The review gives you a way to deal with it: basically you cannot use the data in the char handler, you just buffer it until you hit a tag (open _or_ close).

By the way, did you try XML::RSS? Maybe it would make it easier for you to process your data.