2013-07-27 110 views
0
my ($addr, $usr, $pwd, $ascii, $active, $timeout) = @_; 
    my $ftp; 

    # Set up new FTP with active mode and user-specified timeout... 
    if ($active and $timeout) 
    { 
    $ftp = Net::FTP -> new ($addr, Passive => 0, Timeout => $timeout) 
     or die "Failed to connect to FTP (w/ active, timeout): $addr"; 
    } 


    # Login to new FTP 
    $ftp -> login ($usr, $pwd) 
     or die "Failed to login to FTP: " . $ftp->message; 

    # Set ASCII or binary transfer modes 
    if ($ascii) { $ftp -> ascii(); } 
    else   { $ftp -> binary(); } 

    print "LOGIN: $addr\n"; 
    return $ftp; 
} 

有人可以解釋一下上面的操作嗎?它登錄到ftp然後返回它?它實際上返回了什麼?這是用於上傳還是下載?ftp請求返回什麼(Perl)

+1

FTP並不是真正面向請求的,它基於一個連接,然後你發送命令。您發佈的代碼似乎只是設置了一個連接以供進一步使用。 – millimoose

回答

4

它返回類Net::FTPobject(這樣,FTP連接已經建立,並且如你所願,不登錄/連接您的來電者的代碼可以使用該對象上/下載文件)。

要學習如何使用Net::FTP對象,見例子its documentation,通常$ftp->put()$ftp->get()上傳/下載文件。

1

它不啓動任何文件傳輸。它只是返回一個可用於發出請求的對象。當它返回時,FTP連接建立並且認證完成,並且服務器正在等待下一個命令。

0

你可以做兩件事情:

  1. 使用Data::Dumper轉儲你感興趣的變量您將看到$ftp參考到哈希包含了很多各種條目。
  2. 請閱讀Perl ReferencesPerl Object Oriented Programming。您似乎並不熟悉引用的概念,這並不罕見。很多初學者的Perl書籍都沒有經過它們,許多自學的Perl專家也不瞭解它們。

通讀這兩篇教程將解釋你需要知道的一切。我可以嘗試直接回答你的問題,但我最終會重複這些教程,並且可能不會做得很好。

使用Data::Dumper模塊在返回語句之前轉儲出$ftp,並且您會更好地瞭解它的外觀。然後閱讀教程。

相關問題