Doing the right thing is IMO pretty easy. I tend to recommend:
- XML::Twig is my first port of call - because it's fairly straightforward and easy to get to grips with. I think it would serve well as a 'default' module as a result. It's a bit limited in certain areas (like only handling some XPath expressions) but for most scenarios it's fine. And excellent if you need to deal with large XML thanks to being able to `purge`
- XML::LibXML for anything else - it's a bit steeper on the learning curve (than XML::Twig, but still easier than XML::Simple), but extremely comprehensive.
Mostly I have found that most "I am having this problem with XML::Simple..." questions are solved by "use XML::Twig instead".