開發日記-20190705 關鍵詞 讀書筆記 《Perl語言入門》Day 2 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

開發日記-20190705 關鍵詞 讀書筆記 《Perl語言入門》Day 2

發表時(shí)間:2019-7-5

發布人(rén):融晨科技

浏覽次數:69

Preface


Content

運行程序時(shí),Perl内部的(de)編譯器會先載入整個(gè)源程序,将之(zhī)轉換成内部使用的(de)bytecode,這(zhè)是(shì)一種Prel在(zài)内部用來(lái)表示程序語法樹的(de)數據結構,然後交給Perl的(de)bytecode引擎運行.所以(yǐ),如果在(zài)第200行有個(gè)語法錯誤,那麽在(zài)開始運行第二行代碼之(zhī)前,Perl就(jiù)會報告這(zhè)個(gè)錯誤.

英語跟許多其他(tā)語言一樣區别單數(singular)和(hé / huò)複數(plural).作爲(wéi / wèi)一個(gè)由人(rén)類語言學家設計的(de)計算機語言,Perl也(yě)有類似的(de)區别.一般來(lái)說(shuō),Perl用标量(scalar)來(lái)稱呼單個(gè)失誤.标量是(shì)Perl裏面最簡單的(de)一種數據類型.對大(dà)部分标量來(lái)說(shuō),它要(yào / yāo)麽是(shì)數字(比如255或是(shì)3.25e20),要(yào / yāo)麽是(shì)由字符組成的(de)序列(比如hello或者林肯總統的(de)Gettysburg演講詞).雖然你可能認爲(wéi / wèi)數字和(hé / huò)字符串是(shì)兩碼事,但對Perl來(lái)講,這(zhè)兩者大(dà)多情況下都是(shì)可以(yǐ)在(zài)内部轉換的(de).

所有的(de)内部格式都相同

接下來(lái),我們會看到(dào)如何設定整數(不(bù)帶小數點的(de)數字,比如255和(hé / huò)2001)以(yǐ)及浮點數(帶有小數點的(de)數字,比如3.14159或者1.35*10^25等).但在(zài)Perl内部,則總是(shì)按"雙精度浮點數"的(de)要(yào / yāo)求來(lái)保存數字并進行運算的(de).也(yě)就(jiù)是(shì)說(shuō)Perl内部并不(bù)存在(zài)整數值–程序中用到(dào)的(de)整型常量會被轉換成等效的(de)浮點數值.

浮點數直接量

整數直接量:Perl允許你在(zài)整數直接量中插入下劃線,将若幹位數分開,寫成這(zhè)樣看起來(lái)就(jiù)很清楚了(le/liǎo):
61_298_040_283_768

和(hé / huò)許多其他(tā)程序語言一樣,Perl也(yě)允許使用十進制(decimal)以(yǐ)外的(de)其他(tā)進制來(lái)表示數字.八進制(octal)直接量以(yǐ)0開頭,十六進制(hexadecimal)直接量以(yǐ)0x開頭,而(ér)二進制(binary)直接量則以(yǐ)0b開頭.十六進制的(de)A到(dào)F(或是(shì)小寫的(de)a到(dào)f也(yě)行),代表十進制數的(de)10到(dào)15的(de)數字.

Perl還支持取模(modulu)操作符(%).表達式10%3的(de)結果是(shì)1,也(yě)就(jiù)是(shì)10除以(yǐ)3的(de)榆樹.取模操作符先取整然後再求餘,所以(yǐ)10.5%3.2和(hé / huò)10%3的(de)計算結果是(shì)相同的(de).另外,Perl也(yě)提供類似FORTRAN語言的(de)乘幂(exponentiation)操作符,滿足了(le/liǎo)許多Pascal和(hé / huò)C用戶的(de)心願.乘幂操作符以(yǐ)雙星号表示,比如2**3代表2的(de)3次方,計算結果爲(wéi / wèi)8.

Perl完全支持Unicode,所以(yǐ)在(zài)字符串中可以(yǐ)使用任意一個(gè)合法的(de)Unicode字符串.不(bù)過由于(yú)Perl的(de)曆史原因,它不(bù)會自動将程序源代碼當做Unicode源碼的(de)文本文件讀入,所以(yǐ)如果你想要(yào / yāo)在(zài)源代碼中使用Unicode書寫直接量的(de)話,得手工加上(shàng)utf8編譯指令:

use utf8;

反斜線後面跟上(shàng)不(bù)同的(de)字符,可以(yǐ)表示各種不(bù)同的(de)意義(一般我們把這(zhè)種借助反斜線組合表示特殊字符的(de)方法稱作反斜線轉義).在(zài)雙引号内的(de)字符串直接量内允許使用的(de)比較完整的(de)轉義字符清單如表2-1所示.

組合意義\n換行\r回車\t水平制表符\f換頁符\b退格\a系統響鈴\eEsc(ASCII編碼的(de)轉義字符)\007八進制表示的(de)ASCII值(此例007表示系統響鈴)\0x7f十六禁止表示的(de)ASCII值(此例中7f表示删除鍵的(de)控制代碼)\x{2744}十六進制表示的(de)Unicode代碼點(這(zhè)裏的(de)U+2744表示雪花形狀的(de)圖形字符)\cC控制符,也(yě)就(jiù)是(shì)Control鍵的(de)代碼(此例表示同事按下Ctrl和(hé / huò)C的(de)返回碼)\反斜線|雙引号\l将下一個(gè)字母轉化爲(wéi / wèi)小寫的(de)\L将它後面的(de)所有字母都轉化爲(wéi / wèi)小寫的(de),直到(dào)\E爲(wéi / wèi)止\u将下一個(gè)字母轉爲(wéi / wèi)大(dà)寫的(de)\U将它後面的(de)字母都轉爲(wéi / wèi)大(dà)寫的(de),直到(dào)\E爲(wéi / wèi)止\Q相當于(yú)把它到(dào)\E之(zhī)間的(de)非單詞(non word)字符加上(shàng)反斜線轉義\E結束\L,\U和(hé / huò)\0開始的(de)作用範圍
數字與字符串之(zhī)間的(de)自動轉換

通常Perl會根據需要(yào / yāo),自動在(zài)數字和(hé / huò)字符串之(zhī)間進行類型轉換.那它究竟是(shì)如何知道(dào)炫耀歐數字還是(shì)字符串呢?這(zhè)完全取決于(yú)操作符.如果操作符(比如+)需要(yào / yāo)的(de)是(shì)數字,Perl就(jiù)會将操作數視爲(wéi / wèi)數字;在(zài)操作符(比如.)需要(yào / yāo)字符串時(shí),Perl變回将操作數視爲(wéi / wèi)字符串.因此,你不(bù)用擔心數字和(hé / huò)操作符之(zhī)間的(de)差異,隻管合理使用操作符,Perl會自動就(jiù)能夠完成剩下的(de)工作.

對數字進行運算的(de)操作符(比如乘法)如果遇到(dào)字符串類型的(de)操作數,Perl會自動将字符串轉換成等效的(de)十進制浮點數進行運算.字符串中非數字的(de)部分(以(yǐ)及前置的(de)空白符号)會被略過,所以(yǐ)"12fred34" * "3"也(yě)會得出(chū)36,而(ér)不(bù)會出(chū)現任何警告信息.在(zài)最極端的(de)情況下,完全不(bù)含數字的(de)字符串會被轉換成0.

"前置0"的(de)技巧隻對直接量有效,不(bù)能用于(yú)字符串的(de)自動轉換,自動轉換總是(shì)按照十進制數字來(lái)處理的(de).

标量變量

所謂變量,及時(shí)儲存一個(gè)或多個(gè)值的(de)容器的(de)名稱.而(ér)标量變量,就(jiù)是(shì)單單存儲一個(gè)值的(de)變量.

Perl程序裏面的(de)大(dà)部分變量名稱都習慣使用全小寫,正如你在(zài)本書中看到(dào)的(de)例子(zǐ)一樣,隻有少數集中情況中才都會用大(dà)大(dà)寫字母.而(ér)使用全大(dà)寫的(de)(比如 A R G V ) 變 量 一 般 都 是(shì) 表 示 特 殊 意 義 的(de) 變 量 . 如 果 變 量 名 不(bù) 止 一 個(gè) 單 詞 , 有 人(rén) 喜 歡 用 下 劃 線 分 開 , 如 ARGV)變量一般都是(shì)表示特殊意義的(de)變量.如果變量名不(bù)止一個(gè)單詞,有人(rén)喜歡用下劃線分開,如 ARGV)是(shì)的(de).不(bù)個(gè),人(rén),underscores_are_cool,也(yě)有人(rén)喜歡用$giveMeInitialCaps這(zhè)種風格.當然你也(yě)可以(yǐ)使用全部大(dà)寫的(de)變量名,但這(zhè)麽以(yǐ)來(lái)就(jiù)有可能和(hé / huò)Perl保留的(de)特殊變量的(de)名稱相沖突.所以(yǐ)最好還是(shì)不(bù)要(yào / yāo)用全大(dà)寫的(de)名稱.

用Print輸出(chū)結果

一般我們都想要(yào / yāo)程序輸出(chū)寫什麽信息來(lái),否則,也(yě)許會有人(rén)認爲(wéi / wèi)它什麽事都沒做.print操作符就(jiù)是(shì)用來(lái)完成這(zhè)項任務的(de):它可以(yǐ)接收标量值作爲(wéi / wèi)參數,然後不(bù)經修飾地(dì / de)将它傳送到(dào)标準輸出(chū)(standard output).除非特别指定,否則一般默認的(de)"标準輸出(chū)",指的(de)就(jiù)是(shì)終端屏幕.

借助代碼點創建字符

有時(shí)候我們需要(yào / yāo)輸入鍵盤上(shàng)沒有的(de)那些字符.取得這(zhè)些字符的(de)方法得看用的(de)是(shì)什麽系統的(de)輸入法或者哪一款文本編輯器.不(bù)過,與其非禮尋找字型輸入,還不(bù)如直接鍵入這(zhè)些字符的(de)代碼點(code point),再通過chr()函數轉換成對應字符來(lái)的(de)方便:
反過來(lái),我們可以(yǐ)聽過ord()函數把字符轉換爲(wéi / wèi)代碼點

define函數

行輸入操作符有時(shí)候會返回undef.在(zài)一般情況下,它會返回同一行文本.但若沒有更多輸入,比如讀到(dào)文件結尾(end-of-file)時(shí),它會返回undef來(lái)表示這(zhè)個(gè)狀況.要(yào / yāo)判斷某個(gè)字符串是(shì)undef而(ér)不(bù)是(shì)空字符串,可以(yǐ)使用defined函數.如果是(shì)undef,該函數返回假,否則返回真.

列表(list)指的(de)是(shì)标量的(de)有序集合,而(ér)數組(array)則是(shì)儲存列表的(de)變量.在(zài)Perl裏,這(zhè)兩個(gè)術語常常混用。不(bù)過更精确地(dì / de)說(shuō),列表指的(de)是(shì)數據,而(ér)數組指的(de)是(shì)變量。列表的(de)值不(bù)一定要(yào / yāo)放在(zài)數組裏,但每個(gè)數組變量都一定包含一個(gè)列表(即使是(shì)不(bù)含任何元素的(de)空列表)。

因爲(wéi / wèi)每個(gè)元素都是(shì)獨立不(bù)想管的(de)标量值,所以(yǐ)列表或數組可能包含數字,字符串,undef值或不(bù)同類型标量值的(de)混合。


Daily Task

終有一天,你會老去,而(ér)我,将會加冕爲(wéi / wèi)王!

相關案例查看更多