2014-10-28 104 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) { 
    ... 
    } 
}