2014-10-28 101 views
0

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

实施例:

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"; 
    } 
} 
+1

请避免使用'$ a'和'$ b'变量,它们用于'sort'函数。 – Toto 2014-10-28 12:55:56

+0

此外,它会很好地避免裸字当意义变量 – teodozjan 2014-10-28 14:09:30

回答

0

随着elsif

if (pred1) { 
    ... 
} elsif (pred2) { 
    ... 
} 

谓词2和嵌段[NB:不 “环”]与关联谓词如果1的计算结果为它不会被认为是true

+0

谢谢,朋友! – ZeldaElf 2014-10-28 10:46:55

+0

@ZeldaElf NB:'if($ a == 1)' - 不仅仅是'a' – Alnitak 2014-10-28 10:48:14

+1

Nitpicking http://tinyurl.com/pspjhkk – 2014-10-28 11:30:50

0

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

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

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

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