2015-06-29 30 views
0

我有文件名爲FTP其中有文件名如ex.pl作爲其唯一的內容和我在嘗試通過文件句柄來讀取它並將其存儲在標量和試圖通過$ FTP-> GET得到它,但它提供了錯誤:錯誤的遠程文件名「ex.pl 」 其中ex.pl是存儲在我的目錄中的實際文件。 這裏是我的代碼:的Perl的Net :: FTP得到錯誤壞遠程文件名「ex.pl

sub restore() { 
    #open (IN,"ftpfile") or die "failed to open: $!"; 
    open(INN, "ftp") or die "fail to open: $!"; 
    my $array = <INN>; 
    print $array; 
    my $ftp = Net::FTP->new("$ARGV[0]") or die "host error: [email protected]"; 
    $ftp->login("$ARGV[1]", "$ARGV[2]") 
     or die "login error: ", $ftp->message; 
    $ftp->cwd("/home/qwerty/perl"); 
    $ftp->get("$array") or die "error:", $ftp->message; 
} 

restore; 

回答

1

這裏的問題是 - 你需要chomp $array;,否則你得到嵌入一個換行符。

我會注意到 - 你正在做一些有點混亂的事情,open調用 - INN將是一個全局文件句柄,並且你不關閉它。這將是更好的:

open (my $input, "<", "ftp") or die $!; 
my $filename = <$input>; #read one line; 
chomp $filename; 

我也會在你的程序建議分配名稱/密碼等早前:

my ($hostname, $login, $password) = @ARGV; 

因爲這樣你可以錯誤檢查這些東西(例如,如果存在的話,並有效等)。

+0

它的作品!謝謝 – user4255847

相關問題