使用Net :: SFTP :: Foreign创建.listing文件

时间:2013-09-17 07:14:30

标签: perl sftp perl-module

以下程序是从SFTP服务器下载文件,但我想在localdirectory的{​​{1}}文件列表中创建一个.listing文件。如何使用Net :: SFTP :: Foreign创建它?

sftpdirectory

1 个答案:

答案 0 :(得分:1)

简单的解决方案,它将所有远程条目检索到一个数组中并将其转储:

# untested!
my $ls = $sftp->ls('sftpdirectory')
    or die "ls failed: " . $sftp->error;
open my $fh, '>', 'localdirectory/listing' or die "unable to create file: $!";
print $fh $_->{longname}, "\n" for @$ls;
close $fh;

内存高效的解决方案,可以在从远程主机检索远程条目时将其写入.listing文件:

open my $fh, '>', 'localdirectory/.listing' or die "unable to create file: $!";

my $wanted = sub {
    print $fh $_[1]{longname}, "\n";
    0;
}

unless ($sftp->ls('sftpdirectory', wanted => $wanted)) {
    close $fh;
    unlink 'localdirectory/.listing';
    die "ls failed: ". $sftp->error;
}
close $fh;