计算一个单词出现在文件和电子邮件中的次数,如果单词出现5次以上

时间:2016-06-28 16:53:17

标签: perl

我有一个Perl脚本可以计算“#34; bad"退出文件,如果存在则会发送电子邮件警报。

我正在尝试让脚本只在“" bad"发生五次或更多次,如果单词少于五次则不执行任何操作。

我也试图这样做,如果这个词"坏"发生五次或更多次,然后在五次之后开始计算电子邮件警报。

例如,如果单词" bad"发生七次,然后电子邮件警报说坏词出现三次(总是忽略单词的前五次"坏"出现在文件中)。

输出文件的示例

bad
bad
bad
bad
bad
bad
bad

因为" bad"发生七次,电子邮件提醒应该出去说“#34; bad"已被记录三次。

以下是目前的代码:

#!/usr/bin/perl

use strict;

my $file = 'output.txt';
my $mark = 'bad';

open my $f, "<$file" or die "Error open file: $!\n";

my $counter = 0;

while ( my $line = <$f> ) {

    if ( $line =~ /$mark/ ) {
        $counter++;
    }
}

if ( $counter ) {

    my $body      = "Warning the word bad was recorded $counter times";
    my $cmd_email = "echo $body | mailx -s \"Alert error\" tneal01\@gmail.com";
    system($cmd_email) == 0 or die "Error sending email -- $!";
}

1 个答案:

答案 0 :(得分:1)

简单的解决方案是使用比较运算符

if ( $counter > 5 ) {
     $counter -=  5;
     ........
     .......
}

如果控制结构仅在其条件返回真值时执行。