use SOAP::Lite (+trace => 'all', maptype => {}, encoding => 'iso-8859-1', readable => 1 ); my $soap = SOAP::Lite $soap->outputxml(1); $soap->proxy('http://xxxx', timeout => '60' ); $soap->uri('urn:xxxx'); $soap->on_action( sub { join '/', 'xxxx', $_[1] } ); //@params gets filled with the data tags my $method = SOAP::Data->name( 'xxxx' ); my $result = $soap->call($method => @params)