AFAIK, the parameters passed in a WSDL tranaction are in XML format, so I think the PHP classes at some point serialize to XML, though that is not obvious from the PHP code you posted. From what I could make out of
SOAP::WSDL::Manual - Accessing WSDL based web services, you will need to create a class (or classes) which is a subclass of
SOAP::WSDL::XSD::Typelib::ComplexType and then use that in much the same way as the PHP call does. The information you need to define your classes will be in the wsdl file somewhere, though you might be able to just adapt what's there in the PHP.
Update - Looking at
the docs again, it gives this example:
my $soap = SOAP::WSDL->new(
wsdl => 'file://bla.wsdl',
);
my $result = $soap->call('MyMethod', %data);
It says "Your data is serialized according to the rules in the WSDL" so it looks like you could feed in your wsdl file and then see what it expects %data to be. And do hang around for a bit, I'm sure someone else here can
s/:-(/:-)/