2013-07-27 70 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,并且您会更好地了解它的外观。然后阅读教程。

相关问题