1

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 サポートを有効にするには不十分なようです。

4

2 に答える 2

0

私の最善のアイデアは、プログラムが (明示的または暗黙的に) ロードしたモジュール ファイルのリストを確認することです。このコードはうまくいくはずです

use File::Spec;
print File::Spec->canonpath($_), "\n" for sort values %INC;

関連する各ファイルを調べて (明らかに のようなものは無視できますstrict.pm)、更新したファイルが使用されていることを確認し、アップグレードを使用する可能性のある見落としがないかどうかを確認します。

于 2012-07-18T21:33:33.487 に答える
0

以前の貼り付けからリンクされたバグについて既にコメントしたように、HTTP::Server::SimpleIPv6 を処理するために書かれたものではありません。あちこちにたくさんの IPv4 固有のコードが散らばっています。他のモジュールをインストールするだけでは、これを有効にすることはできません。

Socketで基本的な IPv6 サポートが機能するHTTP::Server::Simpleようになったら、 とは関係なく、 でコードを修正してHTTP::Server::SimpleIPv6 をサポートできます。ここで明確にするために、これにはlib/HTTP/Server/Simple.pmそれ自体の編集と実際のコードの修正が含まれます。IPv4 固有の部分を削除し、代わりにファミリ固有のコードを記述します。理想的には、現在持っている生のコードを使用IO::Socket::IPするのではなく、それ自体を使用します。Socketこれにより、より標準的なものになり、将来的にはより適切にサポートされるようになります。

もう一度要約すると、実際のコードはここで書き直す必要があります。モジュールをインストールするだけでは十分ではありません。

于 2012-07-19T14:31:52.490 に答える