如何使用Perl脚本在目录中搜索以模式结尾的文件

如何使用Perl脚本在目录中搜索以模式结尾的文件,perl,Perl,我必须在文件夹中搜索以变量“$runVar”.csv结尾的特定csv文件。这应该是模式:anything.csv。我必须附上这次搜索的结果并邮寄出去。 请帮忙。我试着用mutt在shell中用一个示例文件来邮寄这个东西。请确认它在perl中也能工作?如果我理解正确,您希望查找一个名为“anything$runVar.csv”的文件,然后对该文件执行一些操作。下面是一个如何做到这一点的示例。如果找到一个文件,它将打开它并打印内容 #!/usr/bin/perl use warnings; use

我必须在文件夹中搜索以变量“$runVar”.csv结尾的特定csv文件。这应该是模式:
anything.csv
。我必须附上这次搜索的结果并邮寄出去。
请帮忙。我试着用mutt在shell中用一个示例文件来邮寄这个东西。请确认它在perl中也能工作?

如果我理解正确,您希望查找一个名为“anything$runVar.csv”的文件,然后对该文件执行一些操作。下面是一个如何做到这一点的示例。如果找到一个文件,它将打开它并打印内容

#!/usr/bin/perl
use warnings;
use strict;

my $run_var = 1822;

my $rx = qr/(?<!\d)$run_var\.csv/;

my $dir = ".";

opendir my $dh, $dir or die $!;

while (my $file = readdir($dh)){

    if ($file =~ $rx){
        open my $fh, '<', $file
          or die $!;

        for my $line (<$fh>){
            chomp $line;
            print "$line\n";
        }
    }
}
#/usr/bin/perl
使用警告;
严格使用;
我的$run\u var=1822;
我的$rx=qr/(?){
chomp$行;
打印“$line\n”;
}
}
}

请不要在Perl词汇标识符中使用大写字母
$run\u var
更具可读性,特别是对于母语不是英语的人

使用
glob

my @matches = glob "*$run_var.csv";

您必须将要搜索的目录添加到模式字符串的开头,或者在调用
glob

之前,您可以在那里
chdir
,您还不清楚要做什么。您正在搜索文件名还是文件内容?你是在寻找
$runVar.csv
“$runVar.csv
.csv
,还是变量
runVar
后面跟着
.csv
的内容?我不明白你到底想要什么,你是在某个文件夹中搜索一个名为“$runVar.csv”的文件,如果你找到它,你必须发送一封电子邮件吗,我不是在寻找文件的内容,实际上我的脚本中有一个名为runVar的变量&该变量将返回一个数值,现在我想搜索一个以runVar.csv结尾的文件(其名称),所以我说该名称后面可能有任何内容。为了更清楚,我给你们举个例子:我想搜索这个文件“DA_Mismatch_Count-RunId_1595.csv”,这个数值将从runVar返回
my @matches = glob "*$run_var.csv";