假设问题的片段之前的某个地方,有一个任务等同于:
my $poolname = "poolname";
然后你说你正在寻找:
poolname_[0-9]* # Presumably, poolname_[0-9]*.csv in fact
但你的正则表达式正在搜索:
poolname_\.[0-9]*.csv # Probably should have a backslash before the .csv
您寻求的模式将不会被您的正则表达式匹配;删除\.
以获得您需要的结果。
opendir(DIR,"reports/") or die "$!";
@FILES = grep { /^${poolname}_[0-9]*\.csv/ } readdir(DIR);
@sorted = reverse sort @FILES;
closedir(DIR);
给定一个目录reports
包含文件:
x_1332827070.csv
x_1333366051.csv
x_1333A66051.csv
y_1332827070.csv
这个脚本:
#!/usr/bin/env perl
use strict;
use warnings;
my $poolname = "x";
opendir(DIR,"reports/") or die "$!";
my @FILES = grep { /^${poolname}_[0-9]*\.csv/ } readdir(DIR);
my @sorted = reverse sort @FILES;
closedir(DIR);
print "$_\n" for @sorted;
产生输出:
x_1333366051.csv
x_1332827070.csv
如果这不是你所追求的,你的评论和你的问题是误导性的。
这是Perl,而不是PERL。这不是一个缩写。 – 2012-04-02 12:59:58
ok :)我认为这是实用的提取和报告语言 – gkns 2012-04-02 13:02:10
你在脚本的顶部有'严格使用'和'使用警告'吗?一目了然,我没有看到任何错误,尽管我会将'poolname_'直接放入正则表达式中。 – 2012-04-02 13:05:17