这是我第一次提交问题,我希望有人能帮助我解决这个问题。我以前从未使用过 Perl,因此也非常感谢任何其他提示。
假设我有一个带有 NET::FTP 的 Perl 脚本,它与调用脚本时可以指定的模式相匹配。例如:
perl ftp.pl '*.txt'
为了保持绝对简单,以下是在建立与 FTP 服务器的连接后我将使用 NET::FTP 执行的操作。
$Pattern = '*.*';
$ftp->cwd($FolderAtHost);
my @Files = $ftp->ls($Pattern);
foreach my $File (@Files)
{
...
}
现在我想用 NET::SFTP 做同样的事情。但 ls
方法完全不同。它返回对 Array 而不是数组的引用,这没什么大不了的。
但我找不到检查特定文件模式的方法,例如: *.*
我知道 sftp 包的 ls
方法中有一个 wanted =>
选项,但它需要 RegEx 而不是文件模式。
sftp->setcwd($FolderAtHost)
my @FilesRef = $sftp->ls(names_only => 1, wanted => qr/.../);
foreach my $File (@$FilesRef)
{
...
}
我是否必须先编写一个文件模式到正则表达式转换器,还是有更简单的方法来实现此目的?
也许与 foreach
中的文件名匹配?
最佳答案
Net::SFTP::Foreign
提供 glob
方法就是为了这个:
sftp->setcwd($folder_at_host);
my $files = $sftp->glob('*.jpg');
for my $file (@$files) {
...
}
关于perl - 如何使用 perl Net::SFTP::Foreign 获取与模式匹配的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59073555/