Available for download are:
Use at your own risk and sanity. Note that you should modify either the SOAP.pm to use a different WSDL file, or call:
my $google = WWW::Search::Google::SOAP->new()
Otherwise it will probably barf at some point.
Or subclass it and provide your own key() and wsdl() methods (they just need to return values).
I'm inclined to think that some sort of uniform method of accessing one's library of WSDL files is needed. Like some sort of WSDL module that, when you install it, you tell it where you like to have WSDL files loaded from. Another module, such as my Google one, could then say that it wants a WSDL file and asks the library. If the library has it, it returns it, else it fetches it from somewhere. The problem there is the somewhere. Perhaps the module in question could supply somewhere where it thinks it's best to get the WSDL file and the WSDL module can decide whether to get it or not and whether to cache it locally or not. Blah Blah Blah.
I'm not happy with it at present, so feel free to rip it to pieces. I'll be touching it up, bringing it in line with WWW::Search modules and then emailing it to Leon. Suggestions are welcome.