【发布时间】:2016-06-29 01:24:13
【问题描述】:
我有一个 Perl 脚本,它计算文件中“坏”一词出现的次数,如果存在,它将发送电子邮件警报。
我试图让脚本仅在“坏”一词出现五次或更多时发送电子邮件,如果该词出现少于五次,则不执行任何操作。
我也在努力做到这一点,如果“坏”这个词出现五次或更多次,则在五次之后开始计算电子邮件警报。
例如,如果单词“bad”出现了 7 次,那么电子邮件警报会指出单词 bad 出现了 3 次(始终忽略文件中出现的前 5 次“bad”单词)。
输出文件示例
bad
bad
bad
bad
bad
bad
bad
由于“坏”一词出现了 7 次,因此应发出电子邮件警报,说明“坏”一词已被记录 3 次。
这是目前为止的代码:
#!/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 -- $!";
}
【问题讨论】:
-
我认为当您说 exits 时,您的意思是 exists。我已编辑您的问题以使用 occurs,这是更好的英语,但 appears 也是可能的。如果您愿意,可以回滚我的编辑
标签: perl