四惊奇、Perl控制結(jié)構(gòu)
1蔑舞、if控制結(jié)構(gòu)
控制結(jié)構(gòu)是邏輯實(shí)現(xiàn)的基石
三種基本的控制結(jié)構(gòu)
-
if結(jié)構(gòu)是程序最基本的控制結(jié)構(gòu)
-
語(yǔ)法:
if(條件) 執(zhí)行語(yǔ)句;
if(條件) { 執(zhí)行語(yǔ)句一; 執(zhí)行語(yǔ)句二;}
執(zhí)行語(yǔ)句 if(條件)
if(條件一) {執(zhí)行語(yǔ)句;} elsif(條件二) {執(zhí)行語(yǔ)句;} else{......}
書寫格式:盡量使用左邊這種格式
image.png-
unless結(jié)構(gòu)
unless結(jié)構(gòu)是if結(jié)構(gòu)的反義結(jié)構(gòu),用法同if類似
unless在條件為假時(shí),執(zhí)行相應(yīng)的語(yǔ)句
unless(條件) 執(zhí)行語(yǔ)句;
-
2、foreach 控制結(jié)構(gòu)
-
for控制結(jié)構(gòu)
當(dāng)算法的操作對(duì)象是一個(gè)數(shù)組或散列時(shí),利用控制結(jié)構(gòu)來(lái)讀取數(shù)組或散列中的元素
語(yǔ)法:for(初始化式; 條件; 表達(dá)式) { 執(zhí)行語(yǔ)句;}
執(zhí)行過(guò)程:執(zhí)行初始化式桅狠,判斷條件,表達(dá)式求值轿秧,重復(fù)第二步和第三步中跌,直到第二步的表達(dá)式為假
my @array = (1,2,3..50,60,43,32,82..99); my $length_array = @array; for(my $i=0;$i<$length_array;$i++) { if($array[$i]>60) { printf"item $i, value is:$array[$i]\n"; } }
-
for循環(huán)中斷、跳出的控制菇篡,使用next和last
next:跳至本次循環(huán)的結(jié)束位置漩符,開(kāi)始下一次循環(huán)
last:跳至循環(huán)的最后位置,結(jié)束循環(huán)
-
foreach控制結(jié)構(gòu)
for循環(huán)結(jié)構(gòu)的一種變體
foreach循環(huán)逐個(gè)遍歷列表中的值驱还,依次迭代循環(huán)過(guò)程
語(yǔ)法:foreach 變量(列表){ 執(zhí)行語(yǔ)句; }
my @array = (1,2,3..50,55,60,43,82..99); foreach my $item (@array) { if($item > 60) { printf("$item\n"); } $item = 150; } ? printf"wtire's result\n"; ? foreach my $item (@array) { printf("$item\n"); }
-
默認(rèn)變量的使用
- $_會(huì)取得perl中的默認(rèn)變量
foreach取得元素并非按照先后順序嗜暴,而是隨機(jī)取的
-
可以使用sort來(lái)對(duì)元素進(jìn)行排序然后取出
sort{$a <=> $b} @array; ##按照從小到大進(jìn)行排序,array都是數(shù)字
sort{$a cmp $b} @array; ##按照從小到大進(jìn)行排序议蟆,array都是字母
next, last來(lái)對(duì)循環(huán)進(jìn)行特定控制
在perl中闷沥,對(duì)于for和foreach,一般大多使用foreach
3咐容、其他控制結(jié)構(gòu)
-
while控制結(jié)構(gòu)
語(yǔ)法:while(條件) {執(zhí)行語(yǔ)句;}
條件返回值為真時(shí)舆逃,執(zhí)行語(yǔ)句,否則退出循環(huán)
-
一般有三種方法控制循環(huán):
計(jì)數(shù)控制:循環(huán)執(zhí)行的次數(shù)是預(yù)先設(shè)定好的戳粒,依據(jù)所記錄的次數(shù)對(duì)循環(huán)進(jìn)行控制
特殊值控制:通過(guò)對(duì)某特殊值進(jìn)行判斷路狮,來(lái)決定程序是否執(zhí)行
用戶交互式控制:通過(guò)顯性詢問(wèn)用戶的意見(jiàn)來(lái)判斷是否執(zhí)行程序
使用last跳出當(dāng)前循環(huán)
-
until控制結(jié)構(gòu)
until結(jié)構(gòu)和while結(jié)構(gòu)相反,當(dāng)條件返回值為假時(shí)才執(zhí)行循環(huán)內(nèi)的代碼
語(yǔ)法:until(條件) { 執(zhí)行語(yǔ)句;}
-
until和continue一起使用蔚约,構(gòu)建完備邏輯
- 語(yǔ)法:until(條件) {執(zhí)行語(yǔ)句;} continue {執(zhí)行語(yǔ)句;}
until (-e "test.txt") { printf"begin to sleep\n"; sleep(1); } continue { printf"waiting for update\n"; } ```
-
switch控制結(jié)構(gòu)
Perl的源碼中并不支持switch結(jié)構(gòu)
對(duì)條件進(jìn)行判斷奄妨,根據(jù)選擇值進(jìn)行相應(yīng)的代碼
語(yǔ)法:switch(條件) case 條件值1: 執(zhí)行語(yǔ)句; case 條件值2: 執(zhí)行語(yǔ)句; default: 執(zhí)行語(yǔ)句