将输出加载到文件/ perl

时间:2019-04-08 07:03:06

标签: perl

我正在计算* .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

1 个答案:

答案 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;