【问题标题】:Perl Net::FTP get error Bad remote filename 'ex.plPerl Net::FTP 得到错误错误的远程文件名'ex.pl
【发布时间】:2015-06-29 09:41:18
【问题描述】:

我有一个名为 ftp 的文件,它的唯一内容是文件名,例如 ex.pl,我试图通过文件句柄读取它并将其存储在标量变量中并尝试通过 $ftp->get 获取它,但它给出了错误: 错误的远程文件名 'ex.pl ' 其中 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: $@";
    $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;

【问题讨论】:

    标签: linux perl ftp debian


    【解决方案1】:

    这里的问题是 - 你需要 chomp $array; 因为否则你会嵌入一个换行符。

    我会注意到 - 你在使用 open 调用时有些混乱 - INN 将是一个全局文件句柄,你不会关闭它。最好是:

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

    我还建议在您的程序中更早地分配名称/登录名等:

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

    因为你可以错误检查这些东西(例如,它们是否存在,是否有效等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多