Предполагая, что где-то перед фрагментом в вопросе есть присвоение, эквивалентное:
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
Если это не то, что вам нужно, ваши комментарии и ваш вопрос вводят в заблуждение.