【发布时间】:2013-05-15 13:17:34
【问题描述】:
您好,刚刚学习 Perl,请见谅。我想要做的是如果日志文件包含这些字符串中的一个或多个失败、错误或跳过然后打印出错误。(日志可能包含一个或多个字符串中的所有字符串或只有一个实例)我尝试了以下代码的变体。它编译但它只打印出完成。
#!perl=C:\IBM\RationalSDLC\ClearCase\bin\perl
my @matches = (
qr/"Failed"/,
qr/"Skipped"/,
qr/"Error"/,
);
$mylog = "email_log.txt";
open (LOG, "<$mylog") || die 'Could not OPEN $mylog file';
LOG_READER:
while (my $loglines = <$LOG>) {
if ($loglines =~ /@matches/) {
print "Error in the log\n";
last LOG_READER;
}
}
close($LOG);
print "\n Test is Done \n";
我也试过了
while ( $_ = <INPUT> ) {
if( $_ =~ @matches ){
print "\n Build Failed! \n";
}
}
感谢您的帮助 修改后的代码有效 此解决方案使用数组 #!perl=C:\IBM\RationalSDLC\ClearCase\bin\perl
my @matches = qr/Failed | Skipped | Error/x;
my $mylog = "email_log.txt";
open (LOG, "<$mylog") || die 'Could not OPEN $mylog file';
LOG_READER:
while (my $loglines = <LOG>) {
if ($loglines =~ /$matches/) {
print "Error in the log\n";
last LOG_READER;
}
}
close(LOG);
print "\n Test is Done \n";
这个解决方案是我使用的
#!perl=C:\IBM\RationalSDLC\ClearCase\bin\perl
使用警告;
使用严格;
my $myfailures = qr/Failed | Skipped | Error/x;
my $mylog = "email_log.txt";
open (LOG, "<$mylog") || die 'Could not OPEN $mylog file';
LOG_READER:
while (my $loglines = <LOG>) {
if ($loglines =~ /$myfailures/) {
print "Error in the log\n";
last LOG_READER;
# last;
}
}
close(LOG);
print "\n Test is Done \n";
另一种解决方案 #!perl=C:\IBM\RationalSDLC\ClearCase\bin\perl 使用警告; 使用严格;
my $mylog = "email_log.txt";
open (INPUT, "<$mylog") || die 'Could not OPEN $mylog file';
LOG_READER:
while(<INPUT>) {
next unless /(Failed|Skipped|Error)/;
print "\n Build failed \n";
last;
}
close(INPUT);
print "\n Test is Done \n";
解决方案 #4
#!perl=C:\IBM\RationalSDLC\ClearCase\bin\perl
use warnings;
use strict;
my $matches = "Failed|Skipped|Error";
my $mylog = "email_log.txt";
open my $LOG, "<", $mylog|| die 'Could not OPEN $mylog file';
while (my $loglines = <$LOG>) {
if ($loglines =~ /$matches/) {
print "\n Error in the log\n";
last;
}
}
close($LOG);
print "\n Test is Done \n";
感谢大家的贡献。他们都工作真的希望我能给每个人正确的答案。通过提供的解决方案,我能够使所有变体正常工作。
【问题讨论】:
-
我在我的解决方案中使用了三元组的答案,但已使用 mpapec 输入修改了上面的代码以修复此脚本。
标签: perl