Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl If-Else语句_Perl_If Statement - Fatal编程技术网

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
。按照你们的规格。如果这不正确,您需要提供一些示例输入。是的,对不起,可能我不清楚。错误和不成功将位于不同的行。我正在给我的原始问题添加示例输入