На первый взгляд кажется, что все, что вам нужно сделать, это предоставить ссылку:
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