こんにちは、Perl を学んでいるので、ご容赦ください。私がやろうとしているのは、ログ ファイルに Failed、Error、または Skipped の文字列が 1 つ以上含まれている場合に、エラーを出力することです (ログには、配列内のすべての文字列の 1 つ以上または 1 つのインスタンスのみが含まれる可能性があります)。以下のコードのバリエーションを試しました。コンパイルされますが、Done のみが出力されます。
#!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 use warnings; 厳密に使用します。
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";
貢献してくれた皆さんに感謝します。それらはすべてうまくいきました。私がみんなに正しい答えを与えることができればいいのにと思います。提供されたソリューションを使用して、すべてのバリエーションを機能させることができました。