Perl - 如果在foreach循环中跳过第二个

时间:2014-10-28 10:33:22

标签: perl if-statement foreach

如果我在Perl if循环中有2个foreach循环,如果我的脚本输入第一个if,如何跳过第二个if

示例:

my $var1 = 1;
my $var2 = 1;

for my $item ('...') {
    if ( $var1 == 1 ) {
        print "First IF \n";
    }
    if ( $var2 == 1 ) {
        print "Second IF (I don't want this to be printed if the first if is true)\n";
    }
}

2 个答案:

答案 0 :(得分:0)

使用elsif

if (pred1) {
    ...
} elsif (pred2) {
    ...
}
如果谓词1的计算结果为true,则不会考虑谓词2和与之关联的块[NB:not“loop”]。

答案 1 :(得分:0)

一种解决方案是设置逻辑,以便仅在测试1为假时检查测试2。

foreach my $item (@items) {
  if (test1) {
    ...
  elsif (test2) {
    ...
  }
}

但另一种选择是使用next直接跳到循环的下一次迭代。

foreach my $item (@items) {
  if (test1) {
    ...
    next;
  }
  if (test2) {
    ...
  }
}