Perl 循環(huán)

有的時(shí)候,我們可能需要多次執(zhí)行同一塊代碼。一般情況下,語(yǔ)句是按順序執(zhí)行的:函數(shù)中的第一個(gè)語(yǔ)句先執(zhí)行,接著是第二個(gè)語(yǔ)句,依此類(lèi)推。

編程語(yǔ)言提供了更為復(fù)雜執(zhí)行路徑的多種控制結(jié)構(gòu)。

循環(huán)語(yǔ)句允許我們多次執(zhí)行一個(gè)語(yǔ)句或語(yǔ)句組,下面是大多數(shù)編程語(yǔ)言中循環(huán)語(yǔ)句的流程圖:

循環(huán)結(jié)構(gòu)

注意,數(shù)字 0, 字符串 '0' 、 "" , 空 list () , 和 undef 為 false ,其他值均為 true。 true 前面使用 !not則返回 false 。

Perl 語(yǔ)言提供了以下幾種循環(huán)類(lèi)型:

循環(huán)類(lèi)型描述

while 循環(huán)

當(dāng)給定條件為 true 時(shí),重復(fù)執(zhí)行語(yǔ)句或語(yǔ)句組。循環(huán)主體執(zhí)行之前會(huì)先測(cè)試條件。

until 循環(huán)

重復(fù)執(zhí)行語(yǔ)句或語(yǔ)句組,直到給定的條件為 true。 循環(huán)主體執(zhí)行之前會(huì)先測(cè)試條件。

for 循環(huán)

多次執(zhí)行一個(gè)語(yǔ)句序列,簡(jiǎn)化管理循環(huán)變量的代碼。

foreach 循環(huán)

foreach 循環(huán)用于迭代一個(gè)列表或集合變量的值。

do...while 循環(huán)

除了它是在循環(huán)主體結(jié)尾測(cè)試條件外,其他與 while 語(yǔ)句類(lèi)似。

嵌套循環(huán)

您可以在 while、for 或 do..while 循環(huán)內(nèi)使用一個(gè)或多個(gè)循環(huán)。

循環(huán)控制語(yǔ)句

循環(huán)控制語(yǔ)句改變了代碼的執(zhí)行順序,通過(guò)它你可以實(shí)現(xiàn)代碼的跳轉(zhuǎn)。

Perl 提供了下列的循環(huán)控制語(yǔ)句:

控制語(yǔ)句描述

next 語(yǔ)句

停止執(zhí)行從next語(yǔ)句的下一語(yǔ)句開(kāi)始到循環(huán)體結(jié)束標(biāo)識(shí)符之間的語(yǔ)句,轉(zhuǎn)去執(zhí)行continue語(yǔ)句塊,然后再返回到循環(huán)體的起始處開(kāi)始執(zhí)行下一次循環(huán)。

last 語(yǔ)句

退出循環(huán)語(yǔ)句塊,從而結(jié)束循環(huán)

continue 語(yǔ)句

continue 語(yǔ)句塊通常在條件語(yǔ)句再次判斷前執(zhí)行。

redo 語(yǔ)句

redo 語(yǔ)句直接轉(zhuǎn)到循環(huán)體的第一行開(kāi)始重復(fù)執(zhí)行本次循環(huán),redo語(yǔ)句之后的語(yǔ)句不再執(zhí)行,continue語(yǔ)句塊也不再執(zhí)行;

goto 語(yǔ)句

Perl 有三種 goto 形式:goto LABLE,goto EXPR,和 goto &NAME。

無(wú)限循環(huán)

如果條件永遠(yuǎn)不為 false,則循環(huán)將變成無(wú)限循環(huán)。

for 循環(huán)在傳統(tǒng)意義上可用于實(shí)現(xiàn)無(wú)限循環(huán)。

由于構(gòu)成循環(huán)的三個(gè)表達(dá)式中任何一個(gè)都不是必需的,您可以將某些條件表達(dá)式留空來(lái)構(gòu)成一個(gè)無(wú)限循環(huán)。

#!/usr/bin/perl
 
for( ; ; )
{
   printf "循環(huán)會(huì)無(wú)限執(zhí)行。\n";
}

你可以按下 Ctrl + C 鍵來(lái)終止循環(huán)。

當(dāng)條件表達(dá)式不存在時(shí),它被假設(shè)為 true 。您也可以設(shè)置一個(gè)初始值和增量表達(dá)式,但是一般情況下,Perl 程序員偏向于使用 for(;;) 結(jié)構(gòu)來(lái)表示一個(gè)無(wú)限循環(huán)。