无法通过包“IO :: Socket :: SSL”找到对象方法“new”

时间:2013-05-15 10:35:07

标签: perl perl-module

有人可以在这个问题上给我一个骨头吗?

Can't locate object method "new" via package "IO::Socket::SSL" at Services/IMAP/Client.pm line 136.

          if ( $use_ssl ) {
135             require IO::Socket::SSL;
136             $imap = IO::Socket::SSL->new (
137                                 Proto    => "tcp",
138                                 PeerAddr => $hostname,
139                                 PeerPort => $port,
140                                 Timeout  => $timeout,
141                                 Domain   => AF_INET,
142                     )
143                     or $self->log_(0, "IO::Socket::SSL error: $@");
144         }

它运行良好数月,但经过一些升级后;可能是perl,它开始了。

Perl版本是:RHEL5上的(v5.16.3)

$perldoc -lm IO::Socket::SSL 
/usr/local/lib/perl5/site_perl/5.16.3/IO/Socket/SSL.pm 

$perldoc -lm IO::Socket::INET 
/usr/local/lib/perl5/5.16.3/i686-linux/IO/Socket/INET.pm 

$perldoc -lm Net::SSLeay 
/usr/local/lib/perl5/site_perl/5.16.3/i686-linux/Net/SSLeay.pm

我错过了依赖关系吗?

非常感谢任何帮助

 These all return without errors.
[root@gw1 ]# perl -MIO::Socket::SSL -e1
[root@gw1 ]# perl -MIO::Socket::IP -e1
[root@gw1 ]# perl -MIO::Socket::INET6 -e1
[root@gw1 ]# perl -MIO::Socket::INET -e1
[root@gw1 ]# perl -MNet::SSLeay -e1
[root@gw1 ]#

2 个答案:

答案 0 :(得分:1)

IO::Socket::SSL会在决定从哪个模块继承之前尝试加载其他模块。这些是:

  • IO::Socket::IP
  • IO::Socket::INET6
  • IO::Socket::INET

由于您安装了IO::Socket::INET,其他两个模块中的一个可能会出错吗?

答案 1 :(得分:0)

有点尴尬,但我发现问题导致了我的问题: 使用的文件中的shebang是: #!/usr/bin/perl(使用供应商perl)

#!/bin/env/ perl

#!/usr/bin/local/perl
我的非供应商perl安装版本需要。 调整平台。

向所有提供意见的人致谢!