in reply to XML Parsing

If you want to keep the XML in a specific order, you can use XML::Parser and treat the data as a stream. It looks like you pass your XML::Parser some callback functions to activate when it hits the start of a tag, the end of a tag, and non-markup text.

Most of the stuff I'd keep in XML doesn't need to maintain a strictly hierarchical tree, so the simplest (and smallest) parser is best for my purposes. If you can use a tied hash with XML::Simple::XMLin, that is another option. (It acts like a hash, but it keeps the order consistent.)