Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Net::SFTP::Foreign中使用regex模式筛选文件_Regex_Perl_Sftp - Fatal编程技术网

在Net::SFTP::Foreign中使用regex模式筛选文件

在Net::SFTP::Foreign中使用regex模式筛选文件,regex,perl,sftp,Regex,Perl,Sftp,使用 模块,是否可以仅下载具有特定扩展名的文件。例如,所有.xml文件 到目前为止,我所尝试的: say "Downloading files..."; $sftp->rget( REMOTE_DIR, LOCAL_DIR, newer_only => 'true', wanted => qr/*\.xml/ ); 这不会下载任何文件。如果我删除了想要的选项,那么所有文件都将被下载。您的模式有语法错误。

使用 模块,是否可以仅下载具有特定扩展名的文件。例如,所有
.xml
文件

到目前为止,我所尝试的:

say "Downloading files...";

$sftp->rget(
        REMOTE_DIR,
        LOCAL_DIR,
        newer_only => 'true',
        wanted     => qr/*\.xml/
);

这不会下载任何文件。如果我删除了
想要的
选项,那么所有文件都将被下载。

您的模式有语法错误。如果我运行它,我会得到以下结果:


量词在正则表达式中不跟随任何内容;由
*
标记是正则表达式中的一个特殊字符。您的模式无效。删除它。使用qr/xml/没有任何区别。在
*
之前添加
,或者简单地删除
*
就可以了。您还可以在正则表达式的末尾添加
$
,以在字符串的末尾指定您想要的
xml
。谢谢,我已经更正了我的正则表达式,但没有下载任何文件。我相信这可能与如何使用这个Perl模块中的“想要的”选项有关。如果我完全删除想要的选项,我会看到所有的文件都被下载,包括所有的XML文件。如果源目录是平面的(没有子目录),你也可以使用
mget
,它接受带有willcards的名称:
$sftp->set\u cwd($remote\u dir)$sftp->mget(“*.xml“,$local\u dir,仅更新=>1)
@r1pster:你必须从你的角度做出一点贡献。你所得到的应该有用,我们只能猜测你犯了什么错误。您确定已经精确地复制了正则表达式模式吗?请举例说明一些实际文件在您认为应该检索时未被检索。您是否尝试过使用
qr/\.xml$/i
进行不区分大小写的匹配?您是否尝试过使用
ls
方法读取该目录中的文件?创建对象时,是否尝试过使用
more=>'-v'
启用详细模式?你可以尝试很多。
qr/\.xml$/