【问题标题】:Using Net::FTP with Perl and trying different commands在 Perl 中使用 Net::FTP 并尝试不同的命令
【发布时间】:2012-12-04 13:27:50
【问题描述】:

出于测试目的,我需要编写一个程序,使用 [Net::FTP][Net::FTP] 连接到服务器,然后接收某个目录中的文件。收到后,立即将其放回原处。

这是我的代码:

   #!/usr/bin/perl

   use Net::FTP;

   $host = "serverA";
   $username = "test";
   $password = "ftptest123";
   $ftpdir = "/ftptest";
   $file = "ftptest.txt";

   $ftp = Net::FTP->new($host) or die "Error connecting to $host: $!";

   $ftp->login($username,$password) or die "Login failed: $!";

   $ftp->cwd($ftpdir) or die "Can't go to $ftpdir: $!";

   $ftp->get($file) or die "Can't get $file: $!";

   $ftp->put($file) or die "Can't put $file: $!";

   $ftp->quit or die "Error closing ftp connection: $!";

关于如何解决这个问题的任何想法?它似乎运行良好,但是当它遇到 put 语句时,它会向我发出这样的声音:

[Net::FTP]: https://metacpan.org/module/Net::FTP

【问题讨论】:

  • 您还应该以“use strict;use warnings;”开始您的 perl 脚本

标签: perl networking cpan


【解决方案1】:

检查$ftp->message 中的错误消息,而不是$! 中的错误消息。它可能会告诉您您没有对该目录的写入权限,或者不允许覆盖现有文件...

【讨论】:

    【解决方案2】:

    首先,您应该始终use strictuse warnings,并在第一个使用点使用my 声明所有变量。这样一来,您可能会忽略的许多微不足道的错误都会为您突出显示。

    Net::FTP 的文档不完整,因为它没有提供有关 message 方法的任何信息。但是,从概要中可以清楚地看出,可以使用$ftp->message 访问有关任何错误的信息。

    当然这不适用于构造函数,好像没有对象提供message方法,所以在这种情况下,信息出现在内置变量$@中。

    在您的程序中尝试这种变体。它可能会立即告诉您失败的原因。

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    use Net::FTP;
    
    my $host = 'serverA';
    my $username = 'test';
    my $password = 'ftptest123';
    my $ftpdir = '/ftptest';
    my $file = 'ftptest.txt';
    
    my $ftp = Net::FTP->new($host) or die "Error connecting to $host: $@";
    
    $ftp->login($username,$password) or die "Login failed: ", $ftp->message;
    
    $ftp->cwd($ftpdir) or die "Can't go to $ftpdir: ", $ftp->message;
    
    $ftp->get($file) or die "Can't get $file: ", $ftp->message;
    
    $ftp->put($file) or die "Can't put $file: ", $ftp->message;
    
    $ftp->quit or die "Error closing ftp connection: ", $ftp->message;
    

    【讨论】:

    • +1 表示使用严格,使用警告,例如完整的错误检查
    猜你喜欢
    • 1970-01-01
    • 2012-03-06
    • 2015-11-17
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2021-07-30
    相关资源
    最近更新 更多