in reply to confused with Stream style in XML::Parser

You've misunderstood the idea behind stream mode I believe. Pure stream mode parsers read the XML bit by bit and when they've recognized a significant chunk (for lack of a better term; e.g. a start tag, an end tag, a stretch of character data) they stop and pass that information back to whatever corresponding callback you've configured. In your example's second <entry> element there looks to be 6 significant chunks:

For what you're sounding like you want (all of the text of an entry regardless of nesting to be one "chunk"), the parser would have to have some way of knowing what start/end tags are significant or ignorable. I believe you might be able to use XML::Twig's stream/tree hybrid mode to get this kind of behavior by setting up a twig_handler for <entry> elements and then calling the text method on the element when that's recognized.

Update: On second read I think you've understood where the problem is you've just gotten stuck trying to figure out how to get around it (and you're on the right track with the stack idea; it's more you'd want an accumulator to which you keep appending your text chunks until you see the outer most end tag)

The cake is a lie.
The cake is a lie.
The cake is a lie.