我有一个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 -- $!";
}
答案 0 :(得分:1)
简单的解决方案是使用比较运算符
if ( $counter > 5 ) {
$counter -= 5;
........
.......
}
如果控制结构仅在其条件返回真值时执行。