版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、安徽理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院Linux開(kāi)發(fā)基礎(chǔ)Development Foundation on Linux OS教師:趙寶Outline Shell programming on Linux OS GNU C/C+ programming CGI programming in C/C+ language Perl programming CGI programming in Perl language2Section 4 Perl programming34.1 編寫(xiě)第一個(gè)Perl程序 第一步:選擇一個(gè)自己喜歡的編譯器,例如我們選擇vi編輯器。第二步:在編輯器中輸入Perl程序:vi
2、helloworld.pl代碼如下:helloworld.pl #! /usr/bin/perl print “Hello,word!n”;第三步:設(shè)置該文件為可執(zhí)行文件: chmod +x helloworld.pl第四步:運(yùn)行程序即可: $./helloworld.pl44.1.1 提問(wèn)并保留結(jié)果在此基礎(chǔ)上做稍微復(fù)雜一點(diǎn)的改變,我們使該程序按你的名字打招呼。要做到這一點(diǎn),需要一個(gè)變量來(lái)存放姓名。我們使用$name來(lái)保存姓名。#!/usr/bin/perlprintf 請(qǐng)問(wèn)您的姓名?;$name=;chop($name);printf 你好, $name,歡迎光臨!n;這里第三行表示從終端獲
3、得行輸入并賦值給$name,這里的$name的值有一個(gè)換行符,第四行chop($name)表示去掉$name的最后一個(gè)字符(即換行符)。第五行顯示輸入。54.1.2 增加選擇現(xiàn)在讓我們?yōu)閍dmin編寫(xiě)一個(gè)特殊的歡迎辭,而對(duì)其他人則采用普通歡迎辭。要達(dá)到這樣的效果必須將輸入的姓名與admin作比較,如果相同則執(zhí)行特殊功能。#!/usr/bin/perlprintf 請(qǐng)問(wèn)您的姓名?;$name=;chop($name);if ($name eq “admin) printf 歡迎admin進(jìn)入本系統(tǒng)!n; else printf 你好, $name,歡迎光臨!n;這里第五行用eq操作符對(duì)兩個(gè)字符串
4、進(jìn)行比較,相同則執(zhí)行下一句,否則執(zhí)行else下的語(yǔ)句(是不是和C語(yǔ)言差不多?)。 64.1.3 猜測(cè)密碼 現(xiàn)在已經(jīng)可以對(duì)admin發(fā)不同的歡迎辭,但如何加上密碼來(lái)控制權(quán)限呢?比如說(shuō),可以讓除admin以外的人都必須輸入密碼直到正確為止: #!/usr/bin/perl$password=wsxy; #密碼為wsxyprintf 請(qǐng)問(wèn)您的姓名?;$name=;chop($name);if ($name eq “admin) printf 歡迎admin進(jìn)入本系統(tǒng)!n;7 else printf 你好, $name!n 請(qǐng)輸入密碼:; $guess=; chop($guess); while ($
5、guess ne $password) printf 密碼錯(cuò)誤,請(qǐng)重新輸入:; $guess=; chop($guess); 8這里先將密碼保存在標(biāo)量變量$password中,然后當(dāng)不是zmd登錄后,先顯示歡迎語(yǔ)句,然后要求輸入密碼,通過(guò)ne操作符將輸入結(jié)果和$password相比較,密碼相同則退出,不同則一直循環(huán)下去。 9當(dāng)運(yùn)行程序時(shí),Perl的內(nèi)部編譯器首先遍歷整個(gè)源程序,把它轉(zhuǎn)變?yōu)閮?nèi)部的字節(jié)碼 ,它是程序的一種內(nèi)部數(shù)據(jù)結(jié)構(gòu)。Perl的字節(jié)碼引擎將運(yùn)行這些字節(jié)碼。 104.2 標(biāo)量數(shù)據(jù)標(biāo)量是 Perl 中最簡(jiǎn)單的數(shù)據(jù)類(lèi)型。大多數(shù)的標(biāo)量是數(shù)字(如 255 或 3.25e20)或者字符串 (如
6、 hello或者蓋茨堡地址) 。標(biāo)量數(shù)據(jù)可有操作符(如相加和串聯(lián)),通常會(huì)產(chǎn)生一個(gè)新的標(biāo)量數(shù)據(jù)。標(biāo)量數(shù)據(jù)的值可以存放在標(biāo)量變量中。標(biāo)量可以從文件或設(shè)備讀取,也可以寫(xiě)進(jìn)去。 114.2.1所有數(shù)字內(nèi)部的格式一致 整數(shù)(如 255,2001 等)和浮點(diǎn)數(shù)(有小數(shù)點(diǎn)的實(shí)數(shù),如 3.14159 ,1.35x1025),在Perl中 都當(dāng)作雙精度浮點(diǎn)數(shù)來(lái)處理。這就是說(shuō)在 Perl 內(nèi)部沒(méi)有整數(shù)值。程序中的整數(shù)被當(dāng)做等價(jià)的浮點(diǎn)數(shù)來(lái)處理。程序運(yùn)行時(shí),也許注意不到這種轉(zhuǎn)換,不應(yīng)當(dāng)尋找只屬于整數(shù)的操作符(不能被浮點(diǎn)數(shù)使用的),因?yàn)樗鼈儾淮嬖?。124.2.2浮點(diǎn)數(shù) 數(shù)字符號(hào)(literal)是 Perl 程序源
7、代碼中代替某個(gè)值的方法。數(shù)字符號(hào)不是計(jì)算或 I/O 操作的結(jié)果 ,它是直接寫(xiě)進(jìn)代碼中的數(shù)據(jù)。有或沒(méi)有小數(shù)點(diǎn)的數(shù)字都是允許的(包括+或-號(hào)),也可帶一個(gè)十進(jìn)制的指數(shù)(符號(hào)為 E) 1.25255.000255.07.25e45 #7.25x10 的 45 次方(一個(gè)大整數(shù) )-6.5e24 # -6.5x10 的 24 次方(一個(gè)大的負(fù)數(shù))-12e-24 #- -12x10 的-24 次方(很小的負(fù)數(shù) )-1.2E-23 #指數(shù)符號(hào)可以大寫(xiě)(E)134.2.3 整數(shù)02001-40255144.2.4字符串慣用C的程序員要注意,在PERL中,字符串的末尾并不含有隱含的NULL字符,NULL字符可
8、以出現(xiàn)在串的任何位置。. 雙引號(hào)內(nèi)的字符串中支持簡(jiǎn)單變量替換,例如:$number = 11;$text = This text contains the number $number.;則$text的內(nèi)容為:This text contains the number 11.“雙引號(hào)內(nèi)的字符串中支持轉(zhuǎn)義字符 15要在字符串中包含雙引號(hào)或反斜線,則在其前加一個(gè)反斜線,反斜線還可以取消變量替換,如:$res = A quote and A backslash ;$result = 14;print (The value of $result is $result.n)的結(jié)果為:The value
9、of $result is 14. 可用nnn(8進(jìn)制)或xnn(16進(jìn)制)來(lái)表示ASCII字符,如:$result = 377; # this is the character 255,or EOF$result = xff; # this is also 255 16單引號(hào)字符串單引號(hào)字符串與雙引號(hào)字符串有兩個(gè)區(qū)別,一是沒(méi)有變量替換功能,二是反斜線不支持轉(zhuǎn)義字符,而只在包含單引號(hào)和反斜線時(shí)起作用。單引號(hào)另一個(gè)特性是可以跨多行,如:$text = This is two lines of text;與下句等效:$text = This is twonlines of textn; 17.字符
10、串和數(shù)值的互相轉(zhuǎn)換例1:$string = 43;$number = 28;$result = $string + $number; # $result = 71若字符串中含有非數(shù)字的字符,則從左起至第一個(gè)非數(shù)字的字符,如:$result = hello * 5; # $result = 0$result = 12a34 +1; # $result = 13 18變量初始值在PERL中,所有的簡(jiǎn)單變量都有缺省初始值:,即空字符。但是建議給所有變量賦初值,否則當(dāng)程序變得大而復(fù)雜后,很容易出現(xiàn)不可預(yù)料且很難調(diào)試的錯(cuò)誤。 194.2.5數(shù)字操作符 Perl 除了提供通常的操作符加(+),減(-),乘
11、(*),除(/)等等之外:2+35.1-2.43*1214/210.2/0.310/3 #通常是浮點(diǎn)除,3.33333 20還提供了模數(shù)運(yùn)算符(%)。10%3 的值是 10 除以 3 的余數(shù)。兩個(gè)操作數(shù)首先變成它們對(duì)應(yīng)的整數(shù)值 ,如 10.5%3.2 轉(zhuǎn)換為10%3 后再計(jì)算 。另外,Perl 中提供了和 FORTRAN 類(lèi)似的指數(shù)操作符,C 和 Pascal 很希望有類(lèi)似的能力。這個(gè)操作符由兩個(gè)*號(hào)表示,如 2*3,表示 2 的 3 次方,等于 8 21(1)乘冪的基數(shù)不能為負(fù),如 (-5) * 2.5 # error;(2)乘冪結(jié)果不能超出計(jì)算機(jī)表示的限制,如10 * 999999 # e
12、rror(3)取余的操作數(shù)如不是整數(shù),四舍五入成整數(shù)后運(yùn)算;運(yùn)算符右側(cè)不能為零(4)單目負(fù)可用于變量: - $y ; # 等效于 $y * -1 224.2.6整數(shù)比較操作符 操作符 描述 大于= 等于= 大于等于!= 不等于 比較,返回 1, 0, or -1 操作符結(jié)果為:0 - 兩個(gè)值相等1 - 第一個(gè)值大1 - 第二個(gè)值大 234.2.7 字符串比較操作符 操作符 描述 lt 小于 gt 大于 eq 等于 le 小于等于 ge 大于等于 ne 不等于 cmp 比較,返回 1, 0, or -1 244.2.8 邏輯操作符 邏輯或:$a | $b 或 $a or $b邏輯與:$a & $
13、b 或 $a and $b邏輯非:! $a 或 not $a邏輯異或:$a xor $b 254.2.9 位操作符位與:&位或:|位非:位異或:左移:$x 2注:不要將&用于負(fù)整數(shù),因?yàn)镻ERL將會(huì)把它們轉(zhuǎn)化為無(wú)符號(hào)數(shù)。 264.2.10賦值操作符 = Assignment only+= Addition and assignment-= Subtraction and assignment*= Multiplication and assignment/= Division and assignment%= Remainder and assignment*= Exponentiation
14、and assignment&= Bitwise AND and assignment|= Bitwise OR and assignment= Bitwise XOR and assignment 27$a = 1; none (basic assignment)$a -= 1; $a = $a - 1;$a *= 2; $a = $a * 2;$a /= 2; $a = $a / 2;$a %= 2; $a = $a % 2;$a *= 2; $a = $a * 2;$a &= 2; $a = $a & 2;$a |= 2; $a = $a | 2;$a = 2; $a = $a 2; 2
15、8.=可在一個(gè)賦值語(yǔ)句中出現(xiàn)多次,如:$value1 = $value2 = a string;.=作為子表達(dá)式($a = $b) += 3;等價(jià)于$a = $b;$a += 3;但建議不要使用這種方式。294.2.11自增自減操作符 :+、-(與C+中的用法相同).不要在變量?jī)蛇叾际褂么朔N操作符:+$var- # error.不要在變量自增/減后在同一表達(dá)式中再次使用:$var2 = $var1 + +$var1; # error.在PERL中+可用于字符串,但當(dāng)結(jié)尾字符為z、Z、9時(shí)進(jìn)位,如:$stringvar = abc;$stringvar+; # $stringvar contai
16、ns abd now$stringvar = aBC;$stringvar+; # $stringvar contains aBD now30$stringvar = abz;$stringvar+; # $stringvar now contains aca$stringvar = AGZZZ;$stringvar+; # $stringvar now contains AHAAA$stringvar = ab4;$stringvar+; # $stringvar now contains ab5$stringvar = bc999;$stringvar+; # $stringvar now
17、 contains bd000.不要使用-,PERL將先將字符串轉(zhuǎn)換為數(shù)字再進(jìn)行自減$stringvar = abc;$stringvar-; # $stringvar = -1 now31果字符串中含有非字母且非數(shù)字的字符,或數(shù)字位于字母中,則經(jīng)過(guò)+運(yùn)算前值轉(zhuǎn)換為數(shù)字零,因此結(jié)果為1,如:$stringvar = ab*c;$stringvar+;$stringvar = ab5c;$stringvar+;324.2.12字符串聯(lián)結(jié)和重復(fù)操作符聯(lián)接: .重復(fù):x聯(lián)接且賦值(類(lèi)似+=): .=例:$newstring = potato . head;$newstring = t x 5;$a
18、= be;$a .= witched; # $a is now bewitched334.2.13 逗號(hào)操作符其前面的表達(dá)式先進(jìn)行運(yùn)算,如:$var1 += 1, $var2 = $var1;等價(jià)于$var1 += 1;$var2 = $var1;使用此操作符的唯一理由是提高程序的可讀性,將關(guān)系密切的兩個(gè)表達(dá)式結(jié)合在一起,如:$val = 26;$result = (+$val, $val + 5); # $result = 32注意如果此處沒(méi)有括號(hào)則意義不同:$val = 26;$result = +$val, $val + 5; # $result = 27 344.2.14 條件操作符與
19、C中類(lèi)似,條件?值1:值2,當(dāng)條件為真時(shí)取值1,為假時(shí)取值2,如:$result = $var = 0 ? 14 : 7;$result = 43 + ($divisor = 0 ? 0 : $dividend / $divisor);PERL 5中,還可以在賦值式左邊使用條件操作符來(lái)選擇被賦值的變量,如:$condvar = 43 ? $var1 : $var2 = 14;$condvar = 43 ? $var1 = 14 : $var2 = 14;354.2.14轉(zhuǎn)義字符36374.2.15 操作符的優(yōu)先級(jí)+, - 自增,自減-, , ! 單目* 乘方=, ! 模式匹配*, /, %,
20、x 乘,除,取余,重復(fù)+, -, . 加,減,聯(lián)接 移位-e, -r, etc. 文件狀態(tài), , =, lt, le, gt, ge 不等比較=, !=, , eq, ne, cmp 相等比較& 位與38|, 位或,位異或& 邏輯與| 邏輯或. 列表范圍? and : 條件操作符=, +=, -=, *=, 賦值and so on , 逗號(hào)操作符not Low-precedence logical NOTand Low-precedence logical ANDor, xor Low-precedence logical OR and XOR 39建議:1、當(dāng)你不確定某操作符是否先執(zhí)行時(shí),一
21、定要用括號(hào)明確之。2、用多行、空格等方式提高程序的可讀性。 404.3 數(shù)組一、列表 列表是包含在括號(hào)里的一序列的值,可以為任何數(shù)值,也可為空,如:(1, 5.3 , hello , 2),空列表:()。注:只含有一個(gè)數(shù)值的列表(如:(43.2) )與該數(shù)值本身(即:43.2 )是不同的,但它們可以互相轉(zhuǎn)化或賦值。列表例:(17, $var, a string)(17, 26 2)(17, $var1 + $var2)($value, The answer is $value)41二、數(shù)組-列表的存貯列表存貯于數(shù)組變量中,與簡(jiǎn)單變量不同,數(shù)組變量以字符打頭,如:array = (1, 2, 3
22、);注:(1)數(shù)組變量創(chuàng)建時(shí)初始值為空列表:()。(2)因?yàn)镻ERL用和$來(lái)區(qū)分?jǐn)?shù)組變量和簡(jiǎn)單變量,所以同一個(gè)名字可以同時(shí)用于數(shù)組變量和簡(jiǎn)單變量,如:$var = 1;var = (11, 27.1 , a string);但這樣很容易混淆,故不推薦。421、數(shù)組的存取.對(duì)數(shù)組中的值通過(guò)下標(biāo)存取,第一個(gè)元素下標(biāo)為0。試圖訪問(wèn)不存在的數(shù)組元素,則結(jié)果為NULL,但如果給超出數(shù)組大小的元素賦值,則數(shù)組自動(dòng)增長(zhǎng),原來(lái)沒(méi)有的元素值為NULL。如:array = (1, 2, 3, 4);$scalar = $array0;$array3 = 5; # now array is (1,2,3,5)$sc
23、alar = $array4; # now $scalar = null;$array6 = 17; # now array is (1,2,3,5,17)43數(shù)組間拷貝result = original;.用數(shù)組給列表賦值list1 = (2, 3, 4);list2 = (1, list1, 5); # list2 = (1, 2, 3, 4, 5).數(shù)組對(duì)簡(jiǎn)單變量的賦值(1) array = (5, 7, 11);($var1, $var2) = array; # $var1 = 5, $var2 = 7, 11被忽略(2) array = (5, 7);($var1, $var2, $
24、var3) = array; # $var1 = 5, $var2 = 7, $var3 = (null).從標(biāo)準(zhǔn)輸入(STDIN)給變量賦值$var = ;array = ; # D為結(jié)束輸入的符號(hào)442 、字符串中的方括號(hào)和變量替換$var0 為數(shù)組var的第一個(gè)元素。$var0 將字符轉(zhuǎn)義,等價(jià)于$var. 0,$var被變量替換,0保持不變。$var0 亦等價(jià)于$var .0。$var則取消了大括號(hào)的變量替換功能,包含文字:$var.453、列表范圍:(1.10) = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)(2, 5.7, 11) = (2, 5, 6, 7,
25、11)(3.3) = (3).用于實(shí)數(shù)() = (2.1, 3.1 ,4.1, 5.1)() = ().用于字符串(aaa.aad) = (aaa,aab, aac, aad)day_of_month = (01.31).可包含變量或表達(dá)式($var1.$var2+5)46.小技巧:$fred = Fred;print (Hello, . $fred . !n) x 2);其結(jié)果為:Hello, Fred!Hello, Fred!474、數(shù)組的輸出:(1) array = (1, 2, 3);print array;結(jié)果為:123485、列表/數(shù)組的長(zhǎng)度當(dāng)數(shù)組變量出
26、現(xiàn)在預(yù)期簡(jiǎn)單變量出現(xiàn)的地方,則PERL解釋器取其長(zhǎng)度。array = (1, 2, 3);$scalar = array; # $scalar = 3,即array的長(zhǎng)度($scalar) = array; # $scalar = 1,即array第一個(gè)元素的值注:以數(shù)組的長(zhǎng)度為循環(huán)次數(shù)可如下編程:$count = 1;while ($count = array) print (element $count: $array$count-1n);$count+;496、子數(shù)組array = (1, 2, 3, 4, 5);subarray = array0,1; # subarray = (1,
27、 2)subarray2 = array1.3; # subarray2 = (2,3,4)array0,1 = (string, 46); # array =(string,46,3,4,5) nowarray0.3 = (11, 22, 33, 44); # array = (11,22,33,44,5) nowarray1,2,3 = array3,2,4; # array = (11,44,33,5,5) nowarray0.2 = array3,4; # array = (5,5,5,5) now可以用子數(shù)組形式來(lái)交換元素:array1,2 = array2,1;507、有關(guān)數(shù)組的庫(kù)
28、函數(shù)(1)sort-按字符順序排序array = (this, is, a,test);array2 = sort(array); # array2 = (a,is, test, this)array = (70, 100, 8);array = sort(array); # array = (100, 70, 8) now( 2)reverse-反轉(zhuǎn)數(shù)組array2 = reverse(array);array2 = reverse sort (array);513)chop-數(shù)組去尾chop的意義是去掉STDIN(鍵盤(pán))輸入字符串時(shí)最后一個(gè)字符-換行符。而如果它作用到數(shù)組上,則將數(shù)組中每一
29、個(gè)元素都做如此處理。list = (rabbit, 12345,quartz);chop (list); # list = (rabbi, 1234,quart) no 4)join/split-連接/拆分join的第一個(gè)參數(shù)是連接所用的中間字符,其余則為待連接的字符數(shù)組。$string = join( , this, is,a, string); # 結(jié)果為this is a stringlist = (words,and);$string = join(:, list, colons); #結(jié)果為words:and:colonsarray = split(/:/,$string); # a
30、rray = (words,and, colons) now 525)push在列表右端添加元素info = (“tom, “male,“25);push(info,”teacher”,”USA”); 6)pop在列表右端刪除元素返回被刪除的值.info = (“tom, “male,“25);Pop(info);則返回值為25.7)unshift:在列表左端添加元素8)shift:在列表左端刪除元素,返回 被刪除的值Example: /home/xjfang/perl/arr1539)Splice函數(shù)從列表中的任意部分刪除元素某些元素,然后添加其它元素。nums=(1,2,3,4,5);Sp
31、lice(num,3,1,(dog,cow);則 num變?yōu)?1,2,3,dog,cow,5)Splice(num,3,0, (dog,cow); #insert則結(jié)果為(1,2,3,dog,cow,4,5)Splice(num,3,1, (); #刪除列表中的一個(gè)元素則結(jié)果為(1,2,3,5);Splice(num,3,2); #get deleted element_list: (4,5)5410)Split函數(shù): 一個(gè)極佳的文本處理函數(shù)之一$sentence=“it is time for class”;word=split(/ /,$sentence);則word=(it,is,tim
32、e,for,class);一個(gè)在系統(tǒng)用戶(hù)數(shù)據(jù)庫(kù)中查找用戶(hù)的例子:/home/xjfang/perl/viewusers.pl554.4 Perl的基本輸入輸出 從STDIN輸入從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù)是很容易的,我們已經(jīng)從第一課上就使用操作符了。例如:$name=;在數(shù)組環(huán)境中,可把所有剩余的行作為一列表返回。如:name=;此時(shí),需要讀入多行,然后再對(duì)各行分別處理。通常做法是:while($_=)chop($_);#處理$_(每一行)56上述程序可簡(jiǎn)化為:while()chop; #等同于chop($_)處理$_(每一行)因?yàn)?_是許多操作符的缺少變量。57從輸入讀取輸入的另一種方法是使用。是
33、從Perl程序命令行所指定的文件中讀取數(shù)據(jù)。例如有個(gè)文件名為pro1的程序:#!/usr/bin/perl;while()print $_;在UNIX環(huán)境中運(yùn)行:pro1 file1,file2,file3example: /home/xjfang/perl/readfile.pl此時(shí),將依次讀入文件file1,file2,file3中的每一行,然后顯示輸出。58向STDOUT輸出Perl用print和printf向標(biāo)準(zhǔn)輸出設(shè)備輸出。print操作符使用字串列表作為參數(shù),依次把每個(gè)字符串發(fā)送給標(biāo)準(zhǔn)輸出,在發(fā)送時(shí)不插入或改變?nèi)魏巫址H纾簆rint 網(wǎng)上學(xué)園.歡迎您! #打印網(wǎng)上學(xué)園歡迎您!pr
34、int 1+2,你好 #打印3你好59printf操作符用于格式化輸出,在C語(yǔ)言中有相同的功能。它使用一個(gè)參數(shù)表,第一個(gè)參數(shù)是格式控制字符串,它定義了如何打印其余參數(shù)。例如:printf %10s% 8d%8.2fn,$a,$b,$c它的打印結(jié)果為:10個(gè)字符寬度的$a,空格,8個(gè)字符寬度的整數(shù)$b,8個(gè)字符寬度且包含兩位小數(shù)的浮點(diǎn)數(shù)$c,最后換行。注意:與前面操作符相類(lèi)似,printf()的括號(hào)可以省略。 604.5控制結(jié)構(gòu)1、選擇結(jié)構(gòu)選擇性控制結(jié)構(gòu)選擇性控制結(jié)構(gòu)包括if和unless語(yǔ)句,類(lèi)似于C語(yǔ)言中的if。首先介紹一下真和假的定義。在Perl中,這些規(guī)則有些難以理解??刂票磉_(dá)式的值為空
35、串或0時(shí),則表達(dá)式為假, 對(duì)于其它任何情況,表達(dá)式的值都為真。注意:00不是空串或0,值為真。0.0也是如此。61指令: if 假如語(yǔ)法一:if(判別運(yùn)算式) 表達(dá)式為真時(shí)的語(yǔ)句塊; 上個(gè)語(yǔ)法在Perl中也可以寫(xiě)成:表達(dá)式為真時(shí)的語(yǔ)句塊 if (判別運(yùn)算式);62范例:print請(qǐng)輸入您的分?jǐn)?shù)?n;$scorre=; #代表標(biāo)準(zhǔn)輸入,會(huì)讓使用者輸入一字符串chop($score); #將$score最后一個(gè)換行字符n刪除掉if($score=60) print您的分?jǐn)?shù)及格了!n;也可以寫(xiě)成: print 您的分?jǐn)?shù)及格了!n if ($score=60);63語(yǔ)法二: if(判別運(yùn)算式一) 判別
36、式一為真時(shí)的語(yǔ)句塊;else 判別式一為假時(shí)的語(yǔ)句塊;64范例:print請(qǐng)輸入您的分?jǐn)?shù)?n; $scorre=;chop($score);if($score=60) print您的分?jǐn)?shù)及格了!n;else print您的分?jǐn)?shù)不及格!n;65語(yǔ)法三: if (判別運(yùn)算式一) 判別式一為真時(shí)的語(yǔ)句塊;elsif(判別運(yùn)算式二) 判別式二為真時(shí)的語(yǔ)句塊;elsif(判別運(yùn)算式三) 判別式三為真時(shí)的語(yǔ)句塊;else 所有判別式為假時(shí)的語(yǔ)句塊;66范例:print請(qǐng)輸入您的分?jǐn)?shù)?n;$scorre=;chop($score);if($score60) print您的分?jǐn)?shù)大于60分!n;elsif ($
37、score60) print您的分?jǐn)?shù)小于60分!n:else print您的分?jǐn)?shù)剛好是60分!n;67指令: unless 假如非unless的含義就是說(shuō)“如果判別式不為真,就執(zhí)行.”。語(yǔ)法一:unless(判別運(yùn)算式) 判別式為假時(shí)語(yǔ)句塊;上個(gè)語(yǔ)法在Perl中也可以寫(xiě)成:判別式為假時(shí)語(yǔ)句塊 unless (判別運(yùn)算式);68范例:print請(qǐng)輸入您的分?jǐn)?shù)?n;$scorre=; #代表標(biāo)準(zhǔn)輸入,會(huì)讓使用者輸入一字符串chop($score); #將$score最后一個(gè)換行字符n刪除掉unless($score60) print您的分?jǐn)?shù)及格了!n;也可以寫(xiě)成: print您的分?jǐn)?shù)及格了!nun
38、less($score60);69語(yǔ)法二:unless(判別運(yùn)算式) 判別式為假時(shí)語(yǔ)句塊;else 判別式為真時(shí)語(yǔ)句塊;70范例:print請(qǐng)輸入您的分?jǐn)?shù)?n;$scorre=;chop($score);unless($score60) print您的分?jǐn)?shù)及格了!n;else print您的分?jǐn)?shù)不及格!n;71:&,|及?:作為控制結(jié)構(gòu)它們看上去像標(biāo)點(diǎn)符號(hào),或是表達(dá)式的一部分。但在Perl中可作為控制結(jié)構(gòu)。 比如說(shuō):if (判別表達(dá)式)為真時(shí)語(yǔ)句塊;也可以寫(xiě)為:為真時(shí)的語(yǔ)句塊 if (判別表達(dá)式)72但更簡(jiǎn)單的方式是:判別式 & 為真時(shí)的語(yǔ)句塊 &為邏輯與操作符,其含義為:若判別式為真,則表達(dá)
39、式的值依賴(lài)于后面語(yǔ)句塊的值。所以為真時(shí)的語(yǔ)句塊被執(zhí)行(用來(lái)求值)。若判別式為假,則整個(gè)表達(dá)式為假,不用考慮后面語(yǔ)句塊的值。所以為假時(shí)的語(yǔ)句塊不被執(zhí)行。同樣道理,unless(this)that可替換為this|that。?:表達(dá)式舉例:exp1?exp2:exp3表示:如果exp1為真則求exp2的值,否則求exp3的值。732.循環(huán)性控制結(jié)構(gòu)任何一種語(yǔ)言沒(méi)有循環(huán)就是不完整的。Perl也是如此,它可以用while, do.while, for, until, foreach來(lái)實(shí)現(xiàn)。循環(huán)中還可以用last,next,redo等操作符進(jìn)行控制。74指令:while 當(dāng). 語(yǔ)法: while(判別運(yùn)
40、算式) 程序敘述區(qū)塊;上個(gè)語(yǔ)法在Perl中也可以寫(xiě)成: 程序敘述區(qū)塊while(判別運(yùn)算式);75范例一:while($=10) $sum+=$i;$i+;print$sumn; #此時(shí)$sum =55;76范例二:$filename=/path/cgi.txt;open(FILE,$filename)|die Cannot open $filenamen;#可以把視為打開(kāi)文件某一行的數(shù)據(jù)while($line=) print $line;close(FILE);77就會(huì)把cgi.txt這個(gè)文件的內(nèi)容顯示出來(lái)。而這個(gè)范例可以把它改寫(xiě)成: $filename=/path/cgi.txt;open
41、(FILE,$filename)|die Cannot open $ filenamen;print $linewhile($line=);close (FILE);78在這個(gè)范例中是把$filename文件內(nèi)的數(shù)據(jù)一行一行的指派給$line這個(gè)純量變量,再把$line顯示出來(lái).如果沒(méi)有將指派給一個(gè)純量變量的話,則會(huì)有一內(nèi)定的輸入變量$_被所指派.因?yàn)?_是一個(gè)內(nèi)定的變量,所以如果使用print函數(shù)的時(shí)候沒(méi)有加上要輸出數(shù)據(jù)的話,就會(huì)把$_的數(shù)據(jù)print出來(lái).所以這個(gè)范例也可以改寫(xiě)成: $filename=/path/cgi.txt;open(FILE,$filename)dieCannot
42、open $ filenamen;while() print;close(FILE);79指令:do while 當(dāng). 語(yǔ)法:do 程序敘述區(qū)塊;while(判別運(yùn)算式);在while和do while循環(huán)中最大的不同是在do while循環(huán)中,程序敘述區(qū)塊至少會(huì)被執(zhí)行一次。80范例:do $sum+=$i;$i+;while($i10) $sum+=$i;$i+;print $sumn; #此時(shí)$Sum=55;83指令:do while 直到.才語(yǔ)法:do 程序敘述區(qū)塊; until (判別運(yùn)算式);84范例:do $sum+=$i;$i+;until($i10);print $sumn; #此時(shí)$sum=55;85指令:for 循環(huán)陳述語(yǔ)法一:for (初始化運(yùn)算式;判別運(yùn)算式;循環(huán)過(guò)程運(yùn)算式) 程序敘述區(qū)塊;86范例一:$sum=0;for($i=1;$i=10;$i+) $sum+=$i;print $sumn; #此時(shí)$sum=55;87范例二:array=(3,6,9);$number=a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年華師大版九年級(jí)地理上冊(cè)月考試卷含答案
- 2025年江西上饒德興市銀城和諧人力資源有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 2025年人民版九年級(jí)語(yǔ)文下冊(cè)階段測(cè)試試卷含答案
- 2025年滬科新版選擇性必修2地理下冊(cè)月考試卷含答案
- 二零二五年度出租車(chē)股份投資與合作市場(chǎng)拓展合同2篇
- 2024年度青海省公共營(yíng)養(yǎng)師之四級(jí)營(yíng)養(yǎng)師押題練習(xí)試卷B卷附答案
- 2024年度青海省公共營(yíng)養(yǎng)師之三級(jí)營(yíng)養(yǎng)師能力提升試卷B卷附答案
- 2024年度青海省公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師題庫(kù)檢測(cè)試卷B卷附答案
- 2024年度黑龍江省公共營(yíng)養(yǎng)師之三級(jí)營(yíng)養(yǎng)師真題練習(xí)試卷A卷附答案
- 2025年浙教版九年級(jí)歷史上冊(cè)階段測(cè)試試卷含答案
- 基因突變和基因重組(第1課時(shí))高一下學(xué)期生物人教版(2019)必修2
- 內(nèi)科學(xué)(醫(yī)學(xué)高級(jí)):風(fēng)濕性疾病試題及答案(強(qiáng)化練習(xí))
- 音樂(lè)劇好看智慧樹(shù)知到期末考試答案2024年
- 辦公設(shè)備(電腦、一體機(jī)、投影機(jī)等)采購(gòu) 投標(biāo)方案(技術(shù)方案)
- 查干淖爾一號(hào)井環(huán)評(píng)
- 案卷評(píng)查培訓(xùn)課件模板
- 2024年江蘇省樣卷五年級(jí)數(shù)學(xué)上冊(cè)期末試卷及答案
- 人教版初中英語(yǔ)七八九全部單詞(打印版)
- 波浪理論要點(diǎn)圖解完美版
- 金融交易數(shù)據(jù)分析與風(fēng)險(xiǎn)評(píng)估項(xiàng)目環(huán)境敏感性分析
- 牛頓環(huán)與劈尖實(shí)驗(yàn)論文
評(píng)論
0/150
提交評(píng)論