Perl If-Else语句
好的,这就是我所拥有的:Perl If-Else语句,perl,if-statement,Perl,If Statement,好的,这就是我所拥有的: #!/usr/local/bin/perl my $argument1 = $ARGV[0]; open (LOGFILE, "<$argument1") or die "Can't find file"; open FILE, ">>output.txt" or die $!; while(<LOGFILE>){ if (/UNSUCCESSFUL/){ print FILE "ERROR in line $.\n" i
#!/usr/local/bin/perl
my $argument1 = $ARGV[0];
open (LOGFILE, "<$argument1") or die "Can't find file";
open FILE, ">>output.txt" or die $!;
while(<LOGFILE>){
if (/UNSUCCESSFUL/){
print FILE "ERROR in line $.\n" if (/Error/);
print "script unsuccessful \n";
else:
print "script successful \n"; }
我认为问题在于我的if-else语句。如果读入的文本中没有“unsuccessful”一词,则只需打印“Script successful”。但是,如果读入的文件中确实包含“unsuccessful”,则应记录文件中出现“Error”一词的位置,并将其写入文件。救命啊
样本输入:
巴福巴巴错误:将不编译
条形图
尝试不成功
您的语法有点不正确:
if (/UNSUCCESSFUL/){
print FILE "ERROR in line $.\n" if (/Error/);
# Print to your file
print FILE "script unsuccessful \n";
#print to screen
print "script unsuccessful \n";
} else {
# Print to your file
print FILE "script successful \n";
#print to screen
print "script successful \n";
}
您的语法有点不正确:
if (/UNSUCCESSFUL/){
print FILE "ERROR in line $.\n" if (/Error/);
# Print to your file
print FILE "script unsuccessful \n";
#print to screen
print "script unsuccessful \n";
} else {
# Print to your file
print FILE "script successful \n";
#print to screen
print "script successful \n";
}
我假设您不希望为输入中不包含单词
“UNSUCCESSFUL”
的所有行打印“script successful”
。相反,请将打印保存到最后,如果没有错误,请打印成功消息
my @errors;
while(<LOGFILE>) {
if (/UNSUCCESSFUL/) {
push(@errors, "ERROR in line $.\n") if (/Error/);
}
}
if (@errors) {
print for @errors;
} else {
print "script successful\n";
}
my@错误;
while(){
如果(/UNSUCCESSFUL/){
如果(/ERROR/),则推送(@errors,“第$行出错。\n”);
}
}
如果(@错误){
打印@错误;
}否则{
打印“脚本成功\n”;
}
我假设您不希望为输入中不包含单词“UNSUCCESSFUL”
的所有行打印“script successful”
。相反,请将打印保存到最后,如果没有错误,请打印成功消息
my @errors;
while(<LOGFILE>) {
if (/UNSUCCESSFUL/) {
push(@errors, "ERROR in line $.\n") if (/Error/);
}
}
if (@errors) {
print for @errors;
} else {
print "script successful\n";
}
my@错误;
while(){
如果(/UNSUCCESSFUL/){
如果(/ERROR/),则推送(@errors,“第$行出错。\n”);
}
}
如果(@错误){
打印@错误;
}否则{
打印“脚本成功\n”;
}
这将为输入文件中不包含未成功
的所有行打印脚本成功
。这将为输入文件中不包含未成功
的所有行打印脚本成功
。这将使脚本成功打印大约100次,然后执行脚本在底部不成功。它不会写在文件中是的,但是“else:”(带冒号)的结果是什么?一个标签,什么都不做(冒号,语句删除操作符???)?什么可以检测到问题?使用“严格”模式?我们怎样才能学会钓鱼呢?这只会让我的脚本成功打印100次,然后在底部脚本失败。它不会写在文件中是的,但是“else:”(带冒号)的结果是什么?一个标签,什么都不做(冒号,语句删除操作符???)?什么可以检测到问题?使用“严格”模式?我们怎样才能学会钓鱼呢?好吧,那就需要为每一行打印了。但是,它并没有写入文件。出于某种原因,我认为我的append函数不起作用。它现在还表示,如果希望将脚本打印到输出文件中,则其中包含“unsuccessful”的脚本仍然成功。我提供的是解决问题所需的信息,而不是现成的复制/粘贴解决方案。好的,对不起。我只是不太熟悉Perl的语法。对不起。@user1440061是的,我知道。输入中的一行必须同时包含UNSUCCESSFUL
和Error
才能添加到打印中,例如UNSUCCESSFUL foo:Error at bar
。按照你们的规格。如果这不正确,您需要提供一些示例输入。是的,对不起,可能我不清楚。错误和不成功将位于不同的行。我正在给我的原始问题添加示例输入好的,这负责每行的打印。但是,它并没有写入文件。出于某种原因,我认为我的append函数不起作用。它现在还表示,如果希望将脚本打印到输出文件中,则其中包含“unsuccessful”的脚本仍然成功。我提供的是解决问题所需的信息,而不是现成的复制/粘贴解决方案。好的,对不起。我只是不太熟悉Perl的语法。对不起。@user1440061是的,我知道。输入中的一行必须同时包含UNSUCCESSFUL
和Error
才能添加到打印中,例如UNSUCCESSFUL foo:Error at bar
。按照你们的规格。如果这不正确,您需要提供一些示例输入。是的,对不起,可能我不清楚。错误和不成功将位于不同的行。我正在给我的原始问题添加示例输入