Perl 未定义的子例程LWP::Protocol::https::Socket::can_read调用

Perl 未定义的子例程LWP::Protocol::https::Socket::can_read调用,perl,vmware,Perl,Vmware,我正在尝试使用VMware Perl库(它似乎在ESXi主机上调用SOAP服务)编写Linux机器和ESXi主机之间的一些交互脚本 我遇到一个无法找到解决方案的错误:未定义的子例程&LWP::Protocol::https::Socket::can_read在/usr/local/share/perl5/LWP/Protocol/http.pm第22行调用 我目前正在运行Net-HTTP-6.03。我确实尝试过Net-HTTP-6.05,但它使基于web的调用速度非常慢(随后的调用也最终失败,错

我正在尝试使用VMware Perl库(它似乎在ESXi主机上调用SOAP服务)编写Linux机器和ESXi主机之间的一些交互脚本

我遇到一个无法找到解决方案的错误:
未定义的子例程&LWP::Protocol::https::Socket::can_read在/usr/local/share/perl5/LWP/Protocol/http.pm第22行调用

我目前正在运行Net-HTTP-6.03。我确实尝试过Net-HTTP-6.05,但它使基于web的调用速度非常慢(随后的调用也最终失败,错误消息是大约1.2MB的XML)——各种论坛建议,只有恢复到6.03才能解决这个问题(通过
cpan install GAAS/Net-HTTP-6.03.tar.gz

我的代码的要点如下:

use VMware::VIRuntime;
my $context = {
    options => ParseOptions(),  # result of using GetOpts::Long to parse command-line
    session => undef
};

$ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = "Net::SSL";    # Suppresses SSL_VERIFY_NONE
if ($context->{options}->{'ignore-ssl-errors'}) { 
    $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;            # Ignores certificate errors
}

## next line fails
$context->{session} = Vim::login(
    service_url => $context->{options}->{url}, 
    username => $context->{options}->{username}, 
    password => $context->{options}->{password}
);

我还可以(需要)做些什么来让它工作吗?

我已经准备好了。我需要从旧版本重新安装Bundle::LWP,而不仅仅是nethttp。没有它,我让LWP v6.05尝试与NETHTTPV6.03对话

一旦我意识到LWP==libwww-perl(是的,我就是那个新手),我就找到了我需要的整个包:

cpan install GAAS/libwww-perl-6.03.tar.gz

我知道了。我需要从旧版本重新安装Bundle::LWP,而不仅仅是nethttp。没有它,我让LWP v6.05尝试与NETHTTPV6.03对话

一旦我意识到LWP==libwww-perl(是的,我就是那个新手),我就找到了我需要的整个包:

cpan install GAAS/libwww-perl-6.03.tar.gz

使用LWP 6.05和Net::HTTP 6.01复制,这是MacPorts在撰写本文时安装的鸡尾酒。将Net::HTTP升级到6.06(当前版本)解决了这个问题:

sudo cpan Net::HTTP

使用LWP 6.05和Net::HTTP 6.01复制,这是MacPorts在撰写本文时安装的鸡尾酒。将Net::HTTP升级到6.06(当前版本)解决了这个问题:

sudo cpan Net::HTTP