以下程序是从SFTP服务器下载文件,但我想在localdirectory
的{{1}}文件列表中创建一个.listing文件。如何使用Net :: SFTP :: Foreign创建它?
sftpdirectory
答案 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;