Perl SFTP 首先下载最旧的文件

  • 本文关键字:文件 下载 SFTP Perl perl
  • 更新时间 :
  • 英文 :


我遇到一个问题,我尝试先下载最旧的文件,但目录列表没有正确返回。下面的示例是我认为应该如何完成,但我无法让它工作。我正在使用网络::SFTP::外部模块。

$source_sftp->setcwd($path) or die "unable to change cwd: " . $source_sftp->error;
my @ls = @{ $source_sftp->ls ('.', names_only => 1,
                                no_wanted => qr/^./,
                                )};
my @sorted = sort { $a->{a}{mtime} <=> $b->{a}{mtime} } $@ls;
for (@sorted) {
print "$_n";
}

经过Net::SFTP::Foreign,我相信,你犯了两个错误:

首先,您仅检索带有 names_only => 1 的文件名。所以你不会得到mtime.

其次,我不确定您将$@ls数组取消引用为标量做什么。这是syntax error.

您需要做的就是执行简单的$sftp -> ls(...)并从结果中的Net::SFTP::Foreign::Attributes对象获取mtimesort它。

以下两行将适合您:

my @ls =  @{ $sftp -> ls('.', no_wanted => qr/^./)   
               or die "unable to retrieve directory: ".$sftp -> error };
my @sorted = map{$_ -> {filename}}
             sort{ $a -> {a}{mtime} <=> $b -> {a}{mtime} } 
             @ls;

最新更新