【发布时间】:2021-03-18 15:18:50
【问题描述】:
我正在尝试检查目录中是否有我期望的文件数量。我需要检查文件是否与我通过的正则表达式匹配。我将正则表达式字符串传递并拆分为一个数组,有人可以帮助我吗?谢谢
my $dir = 'C:\Users\dealmeidal\Desktop\perl_file';
my $string = '3-qr/Clawbacks_20190421\.csv$/-qr/Premiums_20190421\.csv$/-qr/Polizza_20190421\.csv$/';
my @array_regex_tot = (split /-/, $string);
my $expected_file_num = int(shift(@array_regex_tot));
my $file_counter = 0;
checkFilesInDirectory($dir, \@array_regex_tot, $expected_file_num);
sub checkFilesInDirectory {
my ($dir_path, $array_reg, $file_previsti) = @_;
opendir (DIR, $dir_path) or die "Can't open $dir_path: $!";
foreach my $file (@file) {
foreach my $regex (@$array_reg) {
if ($file =~ $regex) {
$file_counter++;
}
}
}
if ($file_counter < $expected_file_num) {
print "KO. Less files than expected.\n";
} elsif ($file_counter == $expected_file_num) {
print "OK Correct num of files\n";
} elsif ($file_counter > $expected_file_num) {
print "WARNING More files than expected.\n";
}
closedir(DIR);
}
【问题讨论】:
-
如果您想要阵列中的模式,那不是这样做的正确方法。为什么是字符串?
-
@simbabque 这是一个字符串,因为我正在模拟我将从应用程序获取的字符串以检查文件