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 warn $ftp->message; } 谢谢你的帮助 编辑: 我需要所有当前日期的文件。 使用ls-lt | grep Jan 13可以在UNIX环境中工作,但不能在脚本中工作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
在这种情况下,什么是有效的正则表达式 我认为正则表达式不是这样工作的。虽然我做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阅读的好东西。