0

好吧,这就是我所拥有的:

#!/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";   }

}

close FILE;
close LOGFILE;      

我认为,问题在于我的 if else 语句。如果读入的文本中没有“不成功”一词,则应简单地打印出“脚本成功”。但是,如果读入文件确实包含“不成功”,那么它应该记录文件中出现“错误”一词的位置并将其写入文件。帮助?!

样本输入:

bar foo bar bar bar
错误:不会编译
bar bar bar bar bar
尝试不成功

4

2 回答 2

2

你的语法有点偏离:

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";
}
于 2012-06-06T19:04:41.180 回答
1

我假设您不希望打印"script successful"输入中不包含单词的所有行"UNSUCCESSFUL"。相反,将打印保存到最后,如果没有错误,则打印成功消息。

my @errors;
while(<LOGFILE>) {
    if (/UNSUCCESSFUL/) {
        push(@errors, "ERROR in line $.\n") if (/Error/);
    }
}

if (@errors) {
    print for @errors;
} else {
    print "script successful\n";
}
于 2012-06-06T19:11:56.083 回答