chorankates has asked for the wisdom of the Perl Monks concerning the following question:

I'm having some problems getting the '_call' function to properly use the parameters being passed to it. I don't think the problem is specific to stubmaker, SOAP::Lite or my .pm, just that I'm still very new to Perl. Any help or insight is appreciated!

Snippet from 'Mercury.pm':
my %methods = ( ActivateLicense => { endpoint => '<valid endpoint>', soapaction => '<valid soap action>', namespace => '<valid namespace>', parameters => [ SOAP::Data->new(name => 'timestamp', type => 'tns:timestamp', at +tr => {}), SOAP::Data->new(name => 'guid', type => 'tns:guid', attr => {}), SOAP::Data->new(name => 'machineName', type => 'tns:machineName' +, attr => {}), ], # end parameters }, # end ActivateLicense )

I'm not attaching the '_call' function as I believe it should be the same for all stubmaker.pl created .pm's, but I can post it if necessary.

Snippet from 'validate.pl':
my %foo = Mercury::ActivateLicense( timestamp => $s{timestamp}, guid => $s{guid}, machineName => $s{machineName} );
The $s{*} keys have sane values, and if I put in some debugging statements, I am able to see that these parameters were received as an array in Mercury.pm. SOAP envelope created:
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:ns="http:// +schemas.xmlsoap.org/soap/encoding/" soap:encodingStyle="http://schema +s.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/ +soap/envelope/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:x +si="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="<valid name +space>" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><tns: +Activate><timestamp xsi:nil="true" xsi:type="tns:timestamp" /><guid x +si:nil="true" xsi:type="tns:guid" /><machineName xsi:nil="true" xsi:t +ype="tns:machineName" /></tns:ActivateLicense></soap:Body></soap:Enve +lope>
Using soapUI with the same .wsdl that created Mercury.pm, this is the envelope that is created:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envel +ope/" xmlns:mer="<valid namespace>"> <soapenv:Header> </soapenv:Header> <soapenv:Body> <mer:Activate systemId="?"> <timestamp>TIMESTAMP</timestamp> <guid>GUID</guid> <machineName>FOO</machineName> </mer:ActivateLicense> </soapenv:Body> </soapenv:Envelope
I know that even once I get Mercury.pm to put the correct parameters from validate.pl into the SOAP envelope, there is still an issue with my schema. I can work through that, but I'm stuck on actually getting the data I'm passing to be used.