1
我继承了一些Perl代码,使一个Web服务调用微软的MapPoint wbeservice,但最近升级后,它开始与以往神秘的失败:当我调用new()时,为什么WebService :: Mappoint会抱怨“不是HASH引用”?
不是在/ usr/lib目录散列引用/的perl5/SITE_PERL/5.8.0/WebService的/ Mappoint.pm线35
没有张贴模块的完整代码(毕竟,WebService::Mappoint可通过CPAN),这行是下面最后:
package WebService::Mappoint;
use SOAP::Lite;
use FileHandle;
use fields qw(ini_file remote_object CustomerInfoHeader UserInfoHeader);
use vars qw(%FIELDS);
use vars qw($VERSION);
$VERSION=0.30;
# @drawmap_EU might be incomplete. It might also contain values that should not be here. Please let me know if there is something wrong
my @EU = (qw(
ad al am at az by ba be bg hr ch cy cz de dk ee es fo fr fi gb ge gi gr hu is ie it lv lt lu mt nl no pl pt ro sk si se tr ua uk yu
));
my %EU;
my %NA = (us=>1, ca=>1, mx=>1);
use strict;
my $ini_files = {};
my ($user, $password);
my $default_ini_path;
BEGIN {
$default_ini_path = $^O =~ m/windows/i ? 'c:\mappoint.ini' : '/etc/mappoint.ini';
}
##############################################################################
sub new {
my ($class, $proxy_url, $inifile_path) = @_;
no strict 'refs';
my $self = bless [\%{"${class}::FIELDS"}], $class;
尽管我可以通过足够多的Perl来解决问题,但是为什么这会导致问题,我有点难以忍受,尽管我认为你只能祝福哈希,而且这似乎是一个匿名数组?