我试图弄清楚Perl程序读取包含文件名的文本文件,打开每个文件并搜索它们以寻找正则表达式(例如GGggG)。
我的理由是首先我需要读取文件并将所有内容保存到数组中。
然后是foreach
数组元素,open
相应的文件并在其中搜索。
有人可以帮忙吗?
此代码适用于(gratia Chankey Pathak)仅包含一个标题的行,因此无需任何处理:
my $filename = 'names.txt';
open (my $fh, "<", $filename) or die $!;
while ( <$fh> ) {
chomp $_;
my $file_contents;
{
open (my $fh, '<', $_) or die $!;
my $file_contents = '';
while (<$fh>) {
$file_contents .= $_;
print "Matched!" if $file_contents =~ /gggggg/i;
}
}
}
但是,如果名称文件中充满了仅由\ t?
分隔的名称(少数/行),该怎么办?答案 0 :(得分:1)
我的方法如下所示解决问题。
my $filename = 'names.txt';
open (my $fh, "<", $filename) or die $!;
# assuming each line contains file name
while ( <$fh> ) {
chomp $_;
my $file_contents;
{
open (my $fh, '<', $_) or die $!;
local $/ = undef;
$file_contents = <$fh>;
close $fh;
}
print "Matched!" if $file_contents =~ /GGGGG/;
}
请参阅: