如何在LWP中启用IPv6支持?

kno*_*orv 10 perl ipv6 lwp

以下代码......

my $user_agent = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => $url);
my $response = $user_agent->request($request);
if ($response->is_success) {
    print "OK\n";
} else {
    die($response->status_line);
}
Run Code Online (Sandbox Code Playgroud)

..将失败..

500 Can't connect to <hostname> (Bad hostname '<hostname>')
Run Code Online (Sandbox Code Playgroud)

..如果$ url中的主机名是仅IPv6地址(即:存在AAAA记录,但没有A记录).

我的问题是:

  • 如何在LWP中启用IPv6支持?
  • 如何为"prefer-IPv4-over-IPv6"(Avs. AAAA)/"prefer-IPv6-over-IPv4"(AAAAvs. A)配置LWP的设置?

cjm*_*cjm 12

看起来你只需要使用Net :: INET6Glue :: INET_is_INET6.引用它的例子:

 use Net::INET6Glue::INET_is_INET6;
 use LWP::Simple;
 print get( 'http://[::1]:80' );
 print get( 'http://ipv6.google.com' );
Run Code Online (Sandbox Code Playgroud)