SOAP/Deserializer.pm did not return a true value at (eval 93) line 3. ...propagated at /usr/lib/perl5/5.8.8/base.pm line 85. BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/ Google/AdWords/Deserializer.pm line 24.
Line 24 of Google/AdWords/Deserializer.pm reads
use SOAP::Lite; use base qw(SOAP::Deserializer);
The code for the package SOAP::Deserializer is contained in the file SOAP/Lite.pm. In other words, there is normally no SOAP/Deserializer.pm file — at least not in the current SOAP::Lite release. OTOH, base checks if there exists a package variable $SOAP::Deserializer::VERSION (which doesn't in this case), and if not tries to load SOAP/Deserializer.pm. This is all fine as long as there is in fact no such file, as the error "Can't locate SOAP/Deserializer.pm at..." would silently be ignored by base.
Now, the thing is that you do seem to have such a file (as the error message indicates), and apparently one which doesn't return a true value when required, which is an error condition that base does not ignore... Further support for this theory is that if I put an empty Deserializer.pm file in my SOAP-Lite installation, I can reproduce the issue:
$ perl -MSOAP::Lite -e'use base qw(SOAP::Deserializer);' SOAP/Deserializer.pm did not return a true value at (eval 80) line 3. ...propagated at /usr/lib/perl5/5.10.1/base.pm line 93. BEGIN failed--compilation aborted at -e line 1.
So, check if you maybe also have such a stray Deserializer.pm file...
Anyhow, the short version of all this is that replacing the above line (in Google/AdWords/Deserializer.pm)
use base qw(SOAP::Deserializer);
with
BEGIN { our @ISA = "SOAP::Deserializer"; }
should also fix the issue...
In reply to Re: Setting up Google AdWords API v200909 - compilation error
by almut
in thread Setting up Google AdWords API v200909 - compilation error
by JWSlogger
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |