WSDL doesn’t works only on perl 5.6 and not 5.8. UNIVERSAL::AUTOLOAD is broken in perl 5.8 and it is used by Class::Hook upon wich WSDL::Generator depends. #### package WebserviceFunctions; sub new { bless {}, shift; } =begin WSDL _DOC Hello =end WSDL sub Hello { my ($s, $name) = @_; return "Hello, $name".$/; } =begin WSDL _DOC Goodbye =end WSDL sub Goodbye { my ($s, $name) = @_; return "Goodbye, $name".$/; } #### #!/usr/bin/perl -w use Pod::WSDL; use CGI; print CGI->header('text/xml'); my $pod = new Pod::WSDL(source=> 'WebServiceFunctions', location=>'http://localhost/webservice_pod.pl', pretty=>1, withDocumentation=>1); print $pod->WSDL; 1;