我正在计算* .htm文件文件夹中不同名称出现的次数。如何获得system "grep..."
调用以写入输出文件而不是屏幕?
在屏幕上打印时,我已经完成了这项工作。尝试将其写入文件时,我将名称和0写入文件,并将grep的计数写入屏幕。我已经找到了一些很好的建议来帮助我达到目标,但是现在变得很具体了,我在搜索结果中发现了很多“噪音”。任何与本教程相关的教程都非常欢迎。
use strict;
use warnings;
open (INFILE, '<', "names.txt");
open (OUTFILE, '>', "report.txt");
while (my $row = <INFILE>) {
chomp $row;
my $name = "$row";
my $number = system "grep -o $name *.htm | wc -l";
print OUTFILE "$name\t $number\n";
}
close INFILE;
close OUTFILE;
我期望OUTFILE中有类似的东西
Name1 245
Name2 198
Name3 79
我在OUTFILE中得到的内容
Name1 0
Name2 0
Name3 0
我在屏幕上看到的内容
245
298
79
答案 0 :(得分:0)
系统功能运行命令并返回命令的状态代码,即,如果成功,它将返回0,否则将返回错误代码。
您要执行的操作是使用反引号运算符捕获命令的 STDOUT ,而不是系统。
use strict;
use warnings;
open (INFILE, '<', "names.txt");
open (OUTFILE, '>', "report.txt");
while (my $row = <INFILE>) {
chomp $row;
my $name = "$row";
my $number = `grep -o $name *.htm | wc -l`;
print OUTFILE "$name\t $number\n";
}
close INFILE;
close OUTFILE;