Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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
Perl 如何通过FTP下载名称中包含当前日期的所有文件?_Perl_Ftp - Fatal编程技术网

Perl 如何通过FTP下载名称中包含当前日期的所有文件?

Perl 如何通过FTP下载名称中包含当前日期的所有文件?,perl,ftp,Perl,Ftp,我有一个类似于IDY03101.200901110500.axf的文件格式。我有大约25个类似的文件驻留在ftp存储库中,只想下载当前日期的所有类似文件。我使用了下面的代码,它不起作用,并且认为正则表达式不正确 my @ymb_date = "IDY.*\.$year$mon$mday????\.axf"; foreach my $file ( @ymb_date) { print STDOUT "Getting file: $file\n"; $ftp->get($file) or

我有一个类似于IDY03101.200901110500.axf的文件格式。我有大约25个类似的文件驻留在ftp存储库中,只想下载当前日期的所有类似文件。我使用了下面的代码,它不起作用,并且认为正则表达式不正确

my @ymb_date = "IDY.*\.$year$mon$mday????\.axf"; foreach my $file ( @ymb_date) { print STDOUT "Getting file: $file\n"; $ftp->get($file) or warn $ftp->message; } 谢谢你的帮助

编辑:

我需要所有当前日期的文件。 使用ls-lt | grep Jan 13可以在UNIX环境中工作,但不能在脚本中工作
在这种情况下,什么是有效的正则表达式

我认为正则表达式不是这样工作的。虽然我做Perl已经有一段时间了,所以我可能离那很远了

$ftp对象是否有权访问mget方法?如果是这样,也许试试这个

$ftp->mget("IDY*.$year$mon$mday*.axf") or warn $ftp->message;

我不认为正则表达式是这样工作的。虽然我做Perl已经有一段时间了,所以我可能离那很远了

$ftp对象是否有权访问mget方法?如果是这样,也许试试这个

$ftp->mget("IDY*.$year$mon$mday*.axf") or warn $ftp->message;

看起来您没有使用任何正则表达式。您正在尝试使用文本模式作为要下载的文件名

也许您希望使用的ls方法获取文件列表,然后对其进行过滤

foreach my $file ( $ftp->ls ) {
    next unless $file =~ m/$regex/;
    $ftp->get($file);
    }
您可能还喜欢关于在Perlmonks实现mget的答案

另外,我想你需要在日期后找到四位数的正则表达式。在Perl中,您可以将其编写为\d{4}。这个是Perl中的一个量词,因此一行中有四个量词不起作用

IDY.*\.$year$mon$mday\d{4}\.axf

看起来您没有使用任何正则表达式。您正在尝试使用文本模式作为要下载的文件名

也许您希望使用的ls方法获取文件列表,然后对其进行过滤

foreach my $file ( $ftp->ls ) {
    next unless $file =~ m/$regex/;
    $ftp->get($file);
    }
您可能还喜欢关于在Perlmonks实现mget的答案

另外,我想你需要在日期后找到四位数的正则表达式。在Perl中,您可以将其编写为\d{4}。这个是Perl中的一个量词,因此一行中有四个量词不起作用

IDY.*\.$year$mon$mday\d{4}\.axf

还应该指出,IDY.*\.$year$mon$mday???。axf不是有效的正则表达式。qr//和quotemeta也是OP阅读的好东西。还应该指出,IDY.*\.$year$mon$mday???。axf不是有效的正则表达式。qr//和quotemeta也是OP阅读的好东西。