Почему не передается ссылка на массив для параметра Host в Net :: FTP-> new? - PullRequest
2 голосов
/ 19 июля 2009

Я создаю FTP-клиент, используя Net :: FTP . В документации говорится, что новый конструктор имеет опцию Host, которая может быть ссылкой на массив с хостами, чтобы попробовать по очереди. Кажется, я не могу заставить это работать. Я использую ActivePerl под Windows XP. Вот мой код:

@try_these = ("turing.unh.edu", "euler.unh.edu");
$ftp = Net::FTP->new(Host => @try_these)
or die "Can't connect: $@\n";

А вот и сообщение об ошибке:

Can't connect: Net::FTP: Bad hostname 'Host'

1 Ответ

6 голосов
/ 19 июля 2009

На первый взгляд кажется, что все, что вам нужно сделать, это предоставить ссылку:

my $ftp = Net::FTP->new(Host => \@try_these);

но здесь, похоже, что-то нехорошее с Net::FTP. Я не уверен, проверял ли кто-нибудь это. Сейчас у меня нет времени на его отладку, но я бы порекомендовал сделать:

my $ftp;
for my $host ( @try_these ) {
    warn "Attempting to connect to '$host'\n";
    $ftp = Net::FTP->new( $host ) and last;
}

die "Could not connect\n" unless $ftp;

Обновление: Я проверил исходный код на Net::FTP->new, и, кажется, не было никаких проверок для передачи ссылки на массив. Это похоже на случай, когда код и документы не соответствуют друг другу.

Отчет об ошибке подано.

Обновление:

Subject: Re: [rt.cpan.org #48001] Net::FTP->new(Host => $arrayref) does not work 
Date:    Sun, 19 Jul 2009 11:35:14 -0500 
To:      bug-libnet[...]rt.cpan.org 
From:    Graham Barr  [text/plain 147b]
> > Seems like a mismatch between the code and the docs.
> 
> Not sure where that came from in the docs, Net::FTP has never supported an
> array of hosts
...