为什么我不能将输出写入输入文件?
它打印得很好,但是没有写入文件。
my $i;
my $regex = $ARGV[0];
for (@ARGV[1 .. $#ARGV]){
open (my $fh, "<", "$_") or die ("Can't open the file[$_] ");
$i++;
foreach (<$fh>){
open (my $file, '>>', '/results.txt') or die ("Can't open the file "); #input file
for (<$file>){
print "Given regexp: $regex\nfile$i:\n line $.: $1\n" if $_ =~ /\b($regex)\b/;
}
}
}
答案 0 :(得分:4)
目前还不清楚你的问题是否已经解决。
我最好的猜测是,您希望程序搜索作为以下参数中指定的文件中的第一个参数传递的正则表达式,并将结果追加到results.txt
。
如果这是正确的,那么这更接近您的需要
use strict;
use warnings;
use autodie;
my $i;
my $regex = shift;
open my $out, '>>', 'results.txt';
for my $filename (@ARGV) {
open my $fh, '<', $filename;
++$i;
while (<$fh>) {
next unless /\b($regex)\b/;
print $out "Given regexp: $regex\n";
print $out "file$i:\n";
print $out "line $.: $1\n";
last;
}
}