inet_pton不是有效的Socket宏

时间:2016-03-18 13:12:58

标签: perl sockets snmp ipv6

我在perl软件包5.10中遇到错误。

“inet_pton不是有效的Socket宏”

if (Socket::inet_pton (AF_INET6,$self->{'ip'}) )
  {

    $log->print("we hit here and ip=$self->{'ip'}");
     $self->{'session'} = Net::SNMP->session(-hostname =>   $self->{'ip'},
                                             -community =>  $self->{'community'},
                                             -port =>       $self->{'port'},
                                             -version =>    'snmpv2c');
  }

你能告诉我根本原因吗?

2 个答案:

答案 0 :(得分:0)

Socket使用自动加载器。这是当你试图调用一个不存在的子时产生的消息。

$ perl -MSocket -wE'my $x = Socket::some_name()'
some_name is not a valid Socket macro at -e line 1

换句话说,错误消息与

同义
Undefined subroutine &Socket::inet_pton called

您必须拥有一个Socket版本,该版本早于添加模块对inet_pton的支持。因此,修复只是升级该模块。

答案 1 :(得分:-1)

你的Perl太老了。据我所知,直到5.12才添加inet_pton支持。从CPAN安装较新版本的Socket可能会有所帮助,但我不会打赌它。 Perl 5.10于2007年问世,当时的IPv6支持比现在更糟糕。