知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷(xiāo)的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷(xiāo)工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
開(kāi)發(fā)日記-20190705 關(guān)鍵詞 讀書(shū)筆記 《Perl語(yǔ)言入門(mén)》Day 2
發(fā)表時(shí)間:2019-7-5
發(fā)布人:葵宇科技
瀏覽次數(shù):70
Preface
Content
運(yùn)行程序時(shí),Perl內(nèi)部的編譯器會(huì)先載入整個(gè)源程序,將之轉(zhuǎn)換成內(nèi)部使用的bytecode,這是一種Prel在內(nèi)部用來(lái)表示程序語(yǔ)法樹(shù)的數(shù)據(jù)結(jié)構(gòu),然后交給Perl的bytecode引擎運(yùn)行.所以,如果在第200行有個(gè)語(yǔ)法錯(cuò)誤,那么在開(kāi)始運(yùn)行第二行代碼之前,Perl就會(huì)報(bào)告這個(gè)錯(cuò)誤.
英語(yǔ)跟許多其他語(yǔ)言一樣區(qū)別單數(shù)(singular)和復(fù)數(shù)(plural).作為一個(gè)由人類(lèi)語(yǔ)言學(xué)家設(shè)計(jì)的計(jì)算機(jī)語(yǔ)言,Perl也有類(lèi)似的區(qū)別.一般來(lái)說(shuō),Perl用標(biāo)量(scalar)來(lái)稱(chēng)呼單個(gè)失誤.標(biāo)量是Perl里面最簡(jiǎn)單的一種數(shù)據(jù)類(lèi)型.對(duì)大部分標(biāo)量來(lái)說(shuō),它要么是數(shù)字(比如255或是3.25e20),要么是由字符組成的序列(比如hello或者林肯總統(tǒng)的Gettysburg演講詞).雖然你可能認(rèn)為數(shù)字和字符串是兩碼事,但對(duì)Perl來(lái)講,這兩者大多情況下都是可以在內(nèi)部轉(zhuǎn)換的.
所有的內(nèi)部格式都相同
接下來(lái),我們會(huì)看到如何設(shè)定整數(shù)(不帶小數(shù)點(diǎn)的數(shù)字,比如255和2001)以及浮點(diǎn)數(shù)(帶有小數(shù)點(diǎn)的數(shù)字,比如3.14159或者1.35*10^25等).但在Perl內(nèi)部,則總是按"雙精度浮點(diǎn)數(shù)"的要求來(lái)保存數(shù)字并進(jìn)行運(yùn)算的.也就是說(shuō)Perl內(nèi)部并不存在整數(shù)值–程序中用到的整型常量會(huì)被轉(zhuǎn)換成等效的浮點(diǎn)數(shù)值.
浮點(diǎn)數(shù)直接量
整數(shù)直接量:Perl允許你在整數(shù)直接量中插入下劃線,將若干位數(shù)分開(kāi),寫(xiě)成這樣看起來(lái)就很清楚了:
61_298_040_283_768
和許多其他程序語(yǔ)言一樣,Perl也允許使用十進(jìn)制(decimal)以外的其他進(jìn)制來(lái)表示數(shù)字.八進(jìn)制(octal)直接量以0開(kāi)頭,十六進(jìn)制(hexadecimal)直接量以0x開(kāi)頭,而二進(jìn)制(binary)直接量則以0b開(kāi)頭.十六進(jìn)制的A到F(或是小寫(xiě)的a到f也行),代表十進(jìn)制數(shù)的10到15的數(shù)字.
Perl還支持取模(modulu)操作符(%).表達(dá)式10%3的結(jié)果是1,也就是10除以3的榆樹(shù).取模操作符先取整然后再求余,所以10.5%3.2和10%3的計(jì)算結(jié)果是相同的.另外,Perl也提供類(lèi)似FORTRAN語(yǔ)言的乘冪(exponentiation)操作符,滿(mǎn)足了許多Pascal和C用戶(hù)的心愿.乘冪操作符以雙星號(hào)表示,比如2**3代表2的3次方,計(jì)算結(jié)果為8.
Perl完全支持Unicode,所以在字符串中可以使用任意一個(gè)合法的Unicode字符串.不過(guò)由于Perl的歷史原因,它不會(huì)自動(dòng)將程序源代碼當(dāng)做Unicode源碼的文本文件讀入,所以如果你想要在源代碼中使用Unicode書(shū)寫(xiě)直接量的話,得手工加上utf8編譯指令:
use utf8;
反斜線后面跟上不同的字符,可以表示各種不同的意義(一般我們把這種借助反斜線組合表示特殊字符的方法稱(chēng)作反斜線轉(zhuǎn)義).在雙引號(hào)內(nèi)的字符串直接量?jī)?nèi)允許使用的比較完整的轉(zhuǎn)義字符清單如表2-1所示.
組合意義\n換行\(zhòng)r回車(chē)\t水平制表符\f換頁(yè)符\b退格\a系統(tǒng)響鈴\eEsc(ASCII編碼的轉(zhuǎn)義字符)\007八進(jìn)制表示的ASCII值(此例007表示系統(tǒng)響鈴)\0x7f十六禁止表示的ASCII值(此例中7f表示刪除鍵的控制代碼)\x{2744}十六進(jìn)制表示的Unicode代碼點(diǎn)(這里的U+2744表示雪花形狀的圖形字符)\cC控制符,也就是Control鍵的代碼(此例表示同事按下Ctrl和C的返回碼)\反斜線|雙引號(hào)\l將下一個(gè)字母轉(zhuǎn)化為小寫(xiě)的\L將它后面的所有字母都轉(zhuǎn)化為小寫(xiě)的,直到\E為止\u將下一個(gè)字母轉(zhuǎn)為大寫(xiě)的\U將它后面的字母都轉(zhuǎn)為大寫(xiě)的,直到\E為止\Q相當(dāng)于把它到\E之間的非單詞(non word)字符加上反斜線轉(zhuǎn)義\E結(jié)束\L,\U和\0開(kāi)始的作用范圍數(shù)字與字符串之間的自動(dòng)轉(zhuǎn)換
通常Perl會(huì)根據(jù)需要,自動(dòng)在數(shù)字和字符串之間進(jìn)行類(lèi)型轉(zhuǎn)換.那它究竟是如何知道炫耀歐數(shù)字還是字符串呢?這完全取決于操作符.如果操作符(比如+)需要的是數(shù)字,Perl就會(huì)將操作數(shù)視為數(shù)字;在操作符(比如.)需要字符串時(shí),Perl變回將操作數(shù)視為字符串.因此,你不用擔(dān)心數(shù)字和操作符之間的差異,只管合理使用操作符,Perl會(huì)自動(dòng)就能夠完成剩下的工作.
對(duì)數(shù)字進(jìn)行運(yùn)算的操作符(比如乘法)如果遇到字符串類(lèi)型的操作數(shù),Perl會(huì)自動(dòng)將字符串轉(zhuǎn)換成等效的十進(jìn)制浮點(diǎn)數(shù)進(jìn)行運(yùn)算.字符串中非數(shù)字的部分(以及前置的空白符號(hào))會(huì)被略過(guò),所以"12fred34" * "3"也會(huì)得出36,而不會(huì)出現(xiàn)任何警告信息.在最極端的情況下,完全不含數(shù)字的字符串會(huì)被轉(zhuǎn)換成0.
"前置0"的技巧只對(duì)直接量有效,不能用于字符串的自動(dòng)轉(zhuǎn)換,自動(dòng)轉(zhuǎn)換總是按照十進(jìn)制數(shù)字來(lái)處理的.
標(biāo)量變量
所謂變量,及時(shí)儲(chǔ)存一個(gè)或多個(gè)值的容器的名稱(chēng).而標(biāo)量變量,就是單單存儲(chǔ)一個(gè)值的變量.
Perl程序里面的大部分變量名稱(chēng)都習(xí)慣使用全小寫(xiě),正如你在本書(shū)中看到的例子一樣,只有少數(shù)集中情況中才都會(huì)用大大寫(xiě)字母.而使用全大寫(xiě)的(比如 A R G V ) 變 量 一 般 都 是 表 示 特 殊 意 義 的 變 量 . 如 果 變 量 名 不 止 一 個(gè) 單 詞 , 有 人 喜 歡 用 下 劃 線 分 開(kāi) , 如 ARGV)變量一般都是表示特殊意義的變量.如果變量名不止一個(gè)單詞,有人喜歡用下劃線分開(kāi),如 ARGV)變量一般都是表示特殊意義的變量.如果變量名不止一個(gè)單詞,有人喜歡用下劃線分開(kāi),如underscores_are_cool,也有人喜歡用$giveMeInitialCaps這種風(fēng)格.當(dāng)然你也可以使用全部大寫(xiě)的變量名,但這么以來(lái)就有可能和Perl保留的特殊變量的名稱(chēng)相沖突.所以最好還是不要用全大寫(xiě)的名稱(chēng).
用Print輸出結(jié)果
一般我們都想要程序輸出寫(xiě)什么信息來(lái),否則,也許會(huì)有人認(rèn)為它什么事都沒(méi)做.print操作符就是用來(lái)完成這項(xiàng)任務(wù)的:它可以接收標(biāo)量值作為參數(shù),然后不經(jīng)修飾地將它傳送到標(biāo)準(zhǔn)輸出(standard output).除非特別指定,否則一般默認(rèn)的"標(biāo)準(zhǔn)輸出",指的就是終端屏幕.
借助代碼點(diǎn)創(chuàng)建字符
有時(shí)候我們需要輸入鍵盤(pán)上沒(méi)有的那些字符.取得這些字符的方法得看用的是什么系統(tǒng)的輸入法或者哪一款文本編輯器.不過(guò),與其非禮尋找字型輸入,還不如直接鍵入這些字符的代碼點(diǎn)(code point),再通過(guò)chr()函數(shù)轉(zhuǎn)換成對(duì)應(yīng)字符來(lái)的方便:
反過(guò)來(lái),我們可以聽(tīng)過(guò)ord()函數(shù)把字符轉(zhuǎn)換為代碼點(diǎn)
define函數(shù)
行輸入操作符有時(shí)候會(huì)返回undef.在一般情況下,它會(huì)返回同一行文本.但若沒(méi)有更多輸入,比如讀到文件結(jié)尾(end-of-file)時(shí),它會(huì)返回undef來(lái)表示這個(gè)狀況.要判斷某個(gè)字符串是undef而不是空字符串,可以使用defined函數(shù).如果是undef,該函數(shù)返回假,否則返回真.
列表(list)指的是標(biāo)量的有序集合,而數(shù)組(array)則是儲(chǔ)存列表的變量.在Perl里,這兩個(gè)術(shù)語(yǔ)常?;煊?。不過(guò)更精確地說(shuō),列表指的是數(shù)據(jù),而數(shù)組指的是變量。列表的值不一定要放在數(shù)組里,但每個(gè)數(shù)組變量都一定包含一個(gè)列表(即使是不含任何元素的空列表)。
因?yàn)槊總€(gè)元素都是獨(dú)立不想管的標(biāo)量值,所以列表或數(shù)組可能包含數(shù)字,字符串,undef值或不同類(lèi)型標(biāo)量值的混合。
Daily Task
終有一天,你會(huì)老去,而我,將會(huì)加冕為王!
相關(guān)案例查看更多
相關(guān)閱讀
- 云南小程序開(kāi)發(fā)制作公司
- 楚雄小程序開(kāi)發(fā)
- 小程序開(kāi)發(fā)課程
- 商標(biāo)
- 汽車(chē)回收管理
- 買(mǎi)小程序被騙
- 搜索引擎優(yōu)化
- 旅游網(wǎng)站建設(shè)
- 云南網(wǎng)站建設(shè)特性
- 云南網(wǎng)站建設(shè)哪家好
- 網(wǎng)站建設(shè)電話
- 文山小程序開(kāi)發(fā)
- 小程序商城
- 云南小程序代建
- 網(wǎng)站建設(shè)公司網(wǎng)站
- 汽車(chē)報(bào)廢回收管理系統(tǒng)
- 云南網(wǎng)站制作
- 企業(yè)網(wǎng)站
- flex
- 云南網(wǎng)站設(shè)計(jì)
- 云南網(wǎng)站建設(shè)百度
- 小程序定制開(kāi)發(fā)
- 汽車(chē)報(bào)廢管理系統(tǒng)
- 小程序公司
- 怎么做網(wǎng)站
- 保山小程序開(kāi)發(fā)
- 云南微信小程序開(kāi)發(fā)
- 軟件開(kāi)發(fā)
- 云南小程序開(kāi)發(fā)首選品牌
- 小程序設(shè)計(jì)