Ich baue einen FTP - Client mit Net :: FTP. In der Dokumentation wird angegeben, dass der neue Konstruktor eine hat Host
Option, die eine Referenz auf ein Array mit Hosts sein kann, die nacheinander ausprobiert werden sollen. Ich scheine nicht in der Lage zu sein, dies zum Laufen zu bringen. Ich verwende ActivePerl unter Windows XP. Hier ist mein Code:
@try_these = ("turing.unh.edu", "euler.unh.edu");
$ftp = Net::FTP->new(Host => @try_these)
or die "Can"t connect: $@n";
Und hier ist die Fehlermeldung:
Can"t connect: Net::FTP: Bad hostname "Host"
Antworten:
6 für die Antwort № 1Auf den ersten Blick müssen Sie lediglich eine Referenz angeben:
my $ftp = Net::FTP->new(Host => @try_these);
aber es scheint etwas Flockiges zu sein Net::FTP
Hier. Ich bin nicht sicher, ob jemand dies getestet hat. Ich habe momentan keine Zeit, um es zu debuggen, aber ich würde nur Folgendes empfehlen:
my $ftp;
for my $host ( @try_these ) {
warn "Attempting to connect to "$host"n";
$ftp = Net::FTP->new( $host ) and last;
}
die "Could not connectn" unless $ftp;
Aktualisieren: Ich habe den Quellcode auf überprüft Net::FTP->new
und es scheint keine Überprüfungen für eine übergebene Array-Referenz zu geben. Dies scheint der Fall zu sein, wenn Code und Dokumente nicht übereinstimmen.
Fehlerbericht abgelegt.
Aktualisieren:
Betreff: Re: [rt.cpan.org # 48001] Net :: FTP-> new (Host => $ arrayref) funktioniert nicht Datum: So, 19. Juli 2009, 11:35:14 -0500 An: bug-libnet [...] rt.cpan.org Von: Graham Barr [Text / Ebene 147b] >> Scheint, als ob der Code und die Dokumente nicht übereinstimmen. > > Ich bin mir nicht sicher, woher das in den Dokumenten kommt. Net :: FTP hat noch nie eine unterstützt > Array von Hosts