Perl是一種粘性語言,如果你有其他語言的基礎的話,你會發現他的流程控制完全和你所知的一模一樣。
簡單說一下他們的區別:
- Perl的elsif在其他語言裏頭可能表示爲else if
- Perl的last,next在其他語言裏頭可能叫break和continue
- 不用找了,Perl中沒有switch,其實這用if else也是可以實現的,不是麼?
- Perl可能比你知道的語言裏頭多了這些:條件控制結構unless、循環控制結構until
- Perl還有一些特殊的寫法
還是詳細介紹一下Perl的流程控制吧
條件結構
語法:
if結構
if(條件){執行內容}
if-else結構
if(條件){執行內容}else{執行內容}
if-elsif-else結構
if(條件1){執行內容}elsif(條件2){執行內容}else{執行內容}
unless結構
unless(條件){執行內容}
說明:unless表示除了滿足條件的,其他都可以執行
unless-else結構
unless(條件){執行內容}else{執行內容}
循環結構
語法結構:
for循環
for(循環參數初始化;循環終止條件;循環參數累積方式){執行語句}
注意:for循環第一次執行也會進行循環終止條件判斷。(你可能知道,但可能有人沒注意)
While循環
while(循環終止條件){執行語句}
Until循環
until(循環終止條件){執行語句}
while和until的區別:while當條件返回false時終止循環;until當條件返回true時終止循環;
do-while循環
do{執行語句}while(循環終止條件);
while/until和do-while區別:while/until如果循環終止條件爲false,則一次都不會執行;do-while不管條件,至少會執行一次。
foreach循環
foreach $var (@array){$var}
簡單說明$var相當於一個容器,存放數組每一個位置存放的數據。等價於for($flag=0;$flag<@array;$flag++){$var = $array[$flag];}
單行條件/循環結構
說明:如果條件結構或循環結構下只包含一行執行內容,可以採用以下寫法;雖然條件判斷寫在最後面,但是會先執行.
if(條件){單行執行語句;}等價於:單行執行語句;if(條件);
unless(條件){單行執行語句;}等價於:單行執行語句;unless(條件);
until(終止條件){單行執行語句;}等價於:單行執行語句;until(終止條件);
while(終止條件){單行執行語句;}等價於:單行執行語句;while(終止條件);
循環控制結構
last;退出當前循環體;
next;停止當前執行內容,進入下一次循環
Perl 有goto label;的語法,這種語法讓流程控制十分靈活;缺點:讓程序較難管理和維護。還是不要用了。