2

我正在使用Net::FTP构建一个 FTP 客户端。文档指出,新的构造函数有一个Host选项,它可以是对带有主机的数组的引用,以依次尝试。我似乎无法让它发挥作用。我在 Windows XP 下使用 ActivePerl。这是我的代码:

@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'
4

1 回答 1

6

乍一看,您所要做的就是提供参考:

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似乎没有对传递的数组引用进行任何检查。这似乎是代码和文档不匹配的情况。

已提交错误报告

更新:

主题:回复:[rt.cpan.org #48001] Net::FTP->new(Host => $arrayref) 不起作用
日期:2009 年 7 月 19 日星期日 11:35:14 -0500
收件人:bug-libnet[...]rt.cpan.org
来自:格雷厄姆·巴尔 [text/plain 147b]
> > 似乎代码和文档之间不匹配。
>
> 不确定文档来自哪里,Net::FTP 从未支持过
> 主机数组
于 2009-07-18T22:27:47.010 回答