SOAP::WSDL is worth a try. It removes the necessity to hand encode each value.
It doesn't parse all wsdl files though, so your mileage may vary.
There is a 1.27 branch, and 2.0 branch. 2.0 looks promising, though I typically have better luck with 1.27.