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