На cpan есть прекрасный и хорошо вам знакомый модуль LWP::UserAgent.
Запустив нижеследующий тестовый скрипт с кириллическим доменом вида http://россия.рф, мы получим 500-ую ошибку вида: 500 Can't connect to xn--aca0d8k7a0jdddbd.xn--ai3ub:80 (Bad hostname)
require LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
my $response = $ua->get('http://россия.рф/');
if ($response->is_success) {
print $response->decoded_content;
}
else {
die $response->status_line;
}
Решение:
Ставим Encode, если не стоит.
sudo cpan Encode
Результат:
use Encode qw/decode/;
require LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
my $response = $ua->get(decode('utf8', 'http://россия.рф/'));
if ($response->is_success) {
print $response->decoded_content;
}
else {
die $response->status_line;
}