我使用IO :: Socket :: IP页面上的代码进行了测试:
use strict;
use warnings;
use IO::Socket::IP -register;
my $sock = IO::Socket->new(
Domain => PF_INET6,
LocalHost => "::1",
Listen => 1,
) or die "Cannot create socket - $@\n";
print "Created a socket of type " . ref($sock) . "\n";
我在perl 5.8.8机器上得到的输出是:
Cannot create socket - Address family for hostaname not supported
在使用perl 5.12.3的slackware机器上,它成功了。
因此,似乎将Socket.pm升级到最新版本还不足以在perl 5.8.8上启用ipv6支持。
答案 0 :(得分:0)
我最好的想法是查看程序加载的模块文件列表(显式或无意义)。这段代码应该可以解决问题
use File::Spec;
print File::Spec->canonpath($_), "\n" for sort values %INC;
查看每个相关文件(显然您可以忽略strict.pm
之类的内容)以确保您使用的文件正在被使用,并查看是否有任何您忽略的可能使用升级的内容。
答案 1 :(得分:0)
由于我已经对您之前粘贴中链接的错误进行了评论,因此根本不会编写HTTP::Server::Simple
来处理IPv6。它有很多特定于IPv4的代码遍布整个地方。您无法通过安装其他模块来启用此功能。
一旦基本IPv6支持在Socket
中工作,独立于HTTP::Server::Simple
,您就可以在HTTP::Server::Simple
中修复代码以支持IPv6。要明确这一点,这将涉及编辑lib/HTTP/Server/Simple.pm
本身,并实际修复代码。删除特定于IPv4的部分并编写一些家庭自然代码;理想情况下使用IO::Socket::IP
本身而不是原始Socket
- 使用它当前拥有的代码。这将使其在未来更加标准和更好地得到支持。
再次总结一下 - 实际的代码需要在这里重写;没有多少单纯的模块安装就足够了。