Was mache ich falsch?
Erstmal nix schlimmes, aber es hätte dir geholfen, zu wissen, dass auf der Gegenseite ein .NET-SOAP-Stack von Microsoft sitzt, die sich noch nie an Standards halten konnten. (Die Endung .asmx ist der Hinweis.) In der Doku zu SOAP::Lite stehen verstreut diverse Workarounds, die man einbauen muss, damit es klappt.
use SOAP::Lite qw();
use URI qw();
our $NAMESPACE = 'http://msiggi.de/Sportsdata/Webservices';
my $soap = SOAP::Lite->new(proxy => 'http://www.OpenLigaDB.de/Webservices/Sportsdata.asmx');
$soap->service('http://www.OpenLigaDB.de/Webservices/Sportsdata.asmx?WSDL');
$soap->default_ns($NAMESPACE);
$soap->on_action(sub {
my ($self, $service) = @_;
my $u = URI->new($NAMESPACE);
$u->path_segments($u->path_segments, $service);
return $u;
});
my $message = $soap->GetMatchByMatchID(SOAP::Data->new(name => 'MatchID', value => 9998));
# use Data::Dump::Streamer qw(DumpLex); DumpLex $message;
Siehe SOAP::SOM, um die Ergebnisse aus dem Objekt $message herauszupfriemeln.