我正在使用以下 Perl 脚本搜索多个文件,并在该行中的特定数字匹配时打印出整个文本行:
#!/perl/bin/perl
use strict;
use warnings;
my @files = <c:/perl64/myfiles/*>;
foreach my $file (@files) {
open my $file_h, '<', $file
or die "Can't open $file: $!";
while (<$file_h>) {
print "$file $_" if /\b1203\b/;
print "$file $_" if /\b1204\b/;
print "$file $_" if /\b1207\b/;
} }
每次在一个或多个文件的一行中存在数字时,该脚本都可以很好地匹配和打印。我的问题是,我希望能够确定任何文件中该数字何时根本不匹配。
我们正在解析具有数千行的多个文件,因此要找到增量(即在任何文件中均不匹配此数字)非常耗时。
澄清一下,每次在每个文件中匹配数字时,我仍然需要匹配和打印,而不仅仅是匹配一次。它匹配的行输出对于打印也是至关重要的。
最终这只是为了显示该数字是否在任何文件中的任何位置都不匹配。
为便于阅读而编辑的源代码
#!/perl/bin/perl
use strict;
use warnings;
my @files = <c:/perl64/myfiles/*>;
foreach my $file ( @files ) {
open my $file_h, '<', $file or die "Can't open $file: $!";
while ( <$file_h> ) {
print "$file $_" if /\b1203\b/;
print "$file $_" if /\b1204\b/;
print "$file $_" if /\b1207\b/;
}
}