I took over a project where SOAP::Lite had been used to implement WSDL with SOAP, and quickly hit a few defects. One was important and had been reported by someone else a while back without resolution. The service were passed XML documents, and these were generated by marking up XML sample templates
The state of SOAP::Lite lead me to evaluate alternatives, and I found XML::Compile impressive both in terms of quality and in effectiveness in generating XML documents. It may not be obvious at first, but is a really powerful model to store the data in a hash, and then map that to the XML document.
There is a bit of learning curve to use this package, and what I missed early one was a "here is how to use this thing". The examples in the man helped that way, and the unit tests have been a useful resource. I also looked at the presentation on the author's web site as well for inspiration even if that may no longer reflect current usage.
Mark Overmeer has done a great job on this package, and has been helpful and quick in resolving the issues we have hit. I was particular impressed how he forwarded one of our issue to another the author of another package.
We use XML::Compile in 3 production interfaces now and have been very happy with it.