in reply to record separator causing problems
That really can’t be emphasized enough: “don’t try to do XML without a proper library, be it XML::Twig, XML::LibXML (my personal favorite), or something else.
In my experience, every XML data-feed that you’re ever going to receive was library-generated ... most commonly with libxml.so (or DLL), which is exactly what is used by the Perl package of the same name. Everything is there ... XSLT, XPath expressions, and so on. So you can arrange to be reading the file with the same software that was used to create it, driving the bus with Perl or Python or whatever language you please. You can focus on what you want to do with the file, and the code required to do it suddenly isn’t complicated at all. You’ve got much better things to do with your time than monkeying-around with regular expressions and record-separators . . .