循环结束后的动作(perl脚本)

时间:2013-11-18 11:58:15

标签: perl

嗨这可能听起来很傻,但我想要做的是,我想循环遍历数组,如果它在文本文件中找到匹配的模式,请打印md127。否则打印sda然而我不希望它为它找不到的每一行打印sda,我只想打印一次而且只有找不到匹配的模式。以下是我的代码示例:

#open output
open (IN, $output) || die "Cannot open the.$output.file";
my @lines = <IN>;
close IN;

for (@lines)
{ 
     if ($_=~ /$find/ )
     {
             #&md127;
             print "md127\n";
     }
     elsif ($_!~ /$find/)
     { 
             print "sda\n";
     }
}

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

#open output
open (my $IN, "<", $output) || die "Cannot open the.$output.file";
my @lines = <$IN>;
close $IN;

my $foundIt = 0;
for (@lines)
{ 
     if ($_=~ /$find/ )
     {
             #&md127;
             print "md127\n";
             $foundIt = 1;
     }

}

if (! $foundIt)
{
    print "sda\n";
}

答案 1 :(得分:2)

一种可能的方法是设置$found变量,最初设置为0,如果找到了您要查找的内容,则设置为1

如果在循环结束时$found0,则打印"sda"

$found = 0;
for (@lines)
{ 
     if ($_=~ /$find/ )
     {
             #&md127;
             print "md127\n";
             $found = 1;
     }
}

print "sda\n" unless $found;