有没有一种方法可以使用Net :: SFTP :: Foreign递归列出文件?

时间:2020-04-29 21:02:02

标签: perl

我正在尝试使用Net::SFTP::Foreign从远程工作目录中提取所有目录,子目录和文件的列表。

当前,我正在使用此行提取我的SFTP网站上的文件列表

my @newfilesLookedAtList = @{$sftp->ls(names_only => 1)}

它工作正常,但只显示目录。我需要目录中文件名的列表。 我在网站https://stackoverflow.com/a/32267575/5652660上找到了这个答案,该网站指出我可以使用以下内容:

$ sftp-> find(@paths,%opts)在给定目录$ path(或目录@path)上进行递归搜索,并返回找到的条目列表或标量上下文中的条目总数。 / p>

每个条目都是对具有两个键的哈希的引用:filename,条目的完整路径;还有一个Net :: SFTP :: Foreign :: Attributes对象,其中包含文件atime,mtime,权限和大小。

当我应用上面的代码时:

my @newfilesLookedAtList = @{$sftp->find('/', names_only => 1)};

我的文件@newfilesLookedAtList返回空。

1 个答案:

答案 0 :(得分:3)

Net::SFTP::Foreign POD指出find返回一个列表,这意味着您不应尝试取消引用它。更改:

my @newfilesLookedAtList = @{$sftp->find('/', names_only => 1)};

收件人:

my @newfilesLookedAtList = $sftp->find('/', names_only => 1);