2010-09-14 66 views
18

假設我有像一塊的Perl代碼:如何從Perl中的內部循環中打破外部循環?

foreach my $x (@x) { 
foreach my $y (@z) { 
    foreach my $z (@z) { 
    if (something()) { 
    # I want to break free! 
    } 
    # do stuff 
    } 
    # do stuff 
} 
# do stuff 
} 

如果something()是真的,我想破(「最後」)所有的循環。

我該怎麼做? 我想到了兩個選項,這兩個我不喜歡: 使用的東西GOTO 添加一個布爾變量,這將標誌着something()是真實的,請在此變種在每個循環的恢復他們之前和last()如果這是真的。

任何建議或想法?

謝謝。

+7

在Perl中,註釋標記拼寫爲「#」,而不是「//」。 – daxim 2010-09-14 13:32:00

回答

36

使用標籤:

OUTER: 
foreach my $x (@x) { 
foreach my $y (@z) { 
    foreach my $z (@z) { 
    if (something()) { 
    last OUTER; 
    } 
    # do stuff 
    } 
    # do stuff 
} 
# do stuff 
}