Perl語言程式設計 標量資料

2021-08-28 15:56:07 字數 2711 閱讀 4860

標量是perl語言中最簡單的資料型別。在perl語言中,標量用符號「$」表示,大多數的標量是數字或者字串,標量之間可以通過操作符(例如相加或者串聯),產生新的標量資料。標量資料的**可以是檔案、裝置,也可以在程式設計的過程中直接寫進去(這種方式也稱為直接量)。

perl內部會把所有的數字均作為雙精浮點數來處理。換言之,即便程式設計的過程中使用了整數a=5,在程式執行的過程中,對程式而言會將a作為5.00來處理。這個轉換是自動進行的,不需要人為的進行資料格式轉換。

直接量是指某個數字在perl源**中的寫法,它不是程式的運算結果,也不是i/o操作的結果,而是在程式設計的過程中直接寫入程式的資料。無論是浮點數直接量,還是整數直接量,在perl程式中都可以用下劃線進行分隔,例如61_298與61298沒有任何差別,只是當數字位數過多時,分隔開來有助於避免錯誤。由於逗號在perl語言中別有他用,因此只能用下劃線分隔,而不能用逗號分隔。

除了常用的十進位制,perl語言也支援使用十進位制以外的其他進製來表示數字。八進位制以0開頭,十六進製制以0x開頭,二進位制以0b開頭。

perl語言中常見的操作符有6中,分別是加(+)、減(-)、乘(*)、除(/)、模數運算(%)和指數操作符(**)。對於取模操作,perl程式會先取整再求模。例如,10.5%3.2與10%3的結果是相同的。

字串就是乙個字串行。在perl語言中,最短的字串不包含任何字元,叫做空字串;最長的字串的長度沒有限制,甚至可以填滿所有記憶體。字串是可輸出的字元、數字、標點符號或其他特殊符號的組合。perl語言中有兩種標記字串的方法,分別是單引號字串和雙引號字串。

單引號字串就是用單引號括起來的字串行,其中單引號不是字串的一部分。在單引號內不可以使用反斜槓「\」來表示轉義,如果字串中涉及到單引號,為了避免程式誤認為字串已經結束了,可以使用反斜槓進行轉義,否則單引號字串不支援轉義用法。另外,回車鍵(鍵盤上的回車,而不是\n)也會占用乙個字元。

雙引號字串就是用雙引號括起來的字串行。與單引號字串相比,雙引號字串中反斜線的作用更為強大。一般而言,如果需要通過反斜線轉義來表示類似於換行符的特殊字元時,需要使用雙引號字串。

常見轉義用法 符號

含義\n

換行\r

回車\t

水平製表符

\f換頁符

\\反斜線

\"雙引號

\i將下乙個字母轉為小寫

perl語言中有兩個最常用的字串操作符:字串連線操作符和字串重複操作符。字串連線操作符「.」的作用是將前後兩個字串直接首尾對接,例如"hello"."world"等價於"helloworld"。字串重複操作符「x」的作用是把操作符左邊字串重複操作符號右邊數字那麼多次,例如"hello"x3等價於"hellohellohello"。

在perl程式中,時常需要完成字串與數字之間的相互轉換。兩者之間的轉換是程式自動完成的,對於乙個變數而言,何時為字串何時為數字是受到操作符的影響的。例如,如果操作符是「+」,那麼程式會將兩個變數視為數字標量,直接相加;如果操作符是「.」,則兩個變數會被視為字串標量,直接首尾相連。在兩者轉換的過程中,數字轉換成字串比較簡單,而字串轉換為數字則有可能會出現錯誤。主要原因在於字串中的字母無法轉換為數字。在perl語言中,字串中的數字可以直接轉換成數字標量,而字母及其後面的任意元素均會被忽略。例如,"123fred"這個標量乘以3後得到的結果是"36",字母f及其後面的部分都會被省略。如果在perl程式開頭加上**「use warnings」,那麼在程式執行的過程中程式會警告:argument "123fred" isn't numeric。

變數是儲存乙個或者多個值的容器。變數的名字在整個程式中保持不變,但是變數對應的值是可以發生變化的。標量變數的名字由符號「$」來標識,其名稱可以由字母、數字和下劃線組成,但是不能用數字開頭。在perl語言中,大小寫是嚴格區分的,換言之,$fred和$fred是兩個不同的變數。

在perl語言中用等號賦值,將等號右邊的值賦給左邊的變數。對於類似於$fred = $fred + 3這類的自增或自減操作,可以使用二元賦值操作符代替,例如$fred += 5,兩者的意義是相同的。

如果想將標量輸出到顯示器,可以使用print()函式。

標量是可以內插到字串中的。一般使用雙引號字串的目的除了可以使用反斜線轉義之外,多半是為了使用變數內插。即將字串內出現的標量變數替換成該變數當前的值。如果該變數還沒有被賦值,則會使用空值進行替換。另一方面,如果不想進行變數內插,而是字串中真的存在乙個$符號,則需要反斜線進行轉義。在內插的過程中還會出現乙個問題,由於變數名是字串中有意義的最長的那乙個,因此有可能會造成歧義,這時可以利用花括號將變數名括起來,以免程式誤認為變數名後面的字串也是變數名的一部分。

在下面**中,操作符的優先順序從上往下排列。

操作符優先順序和結合性

結合性操作符左

括號和列表操作符的引數

左->

自增和自減運算右**

右\ ! ~ + - (一元操作符)

左=~、!=

左*、/、%、x

左<<>>

named unary operators (-x filetests,rand)

<<=>>=

== != <=>左&

左|^左&&

左||..、...右?:

右=、 +=、-=、.=

左,、=>

list operators(rightward)

右not

左and

左or xor

任何操作符的優先順序都高於列在它下方的所有操作符,並且低於列在它上方的所有操作符。當兩個優先順序相同的操作符相遇的時候,由結合性決定先運算哪個。

Perl 學習筆記 標量資料

最近學習perl,準備看一遍入門指南,關鍵的東西還是記錄下來,以便以後複習和檢視參考 筆記來自 1.在perl內部,不區分整數值和浮點數值,所有數字的內部格式都相同,採用 雙精度浮點數 運算,自動轉換 範圍值 1e 100到 1e100 2.可以在乙個很大的數中間插入下劃線,便於閱讀 61 298 ...

2 Perl 標量資料概述

在英語以及許多其它的語言中,需要區別單數和複數。作為一門由語言學家發明的語言,perl 也是類似的。同一般情況一樣,perl 也有資料型別 標量 標量是perl 中最簡單的資料型別。大多數的標量是數字 如255 或3.25e20 或者字串 如hello 或者蓋茨堡位址 你也許把數字和字串看作不同的事...

perl自學2 標量資料 20150313

今天閱讀的是 perl語言入門 的第二章 1 34頁 單引號和雙引號中的反斜線含義是不同的。單引號中,反斜線只有兩種情況為轉義 和 前者表示反斜線自身,後者表示單引號。n 為兩個字元,反斜線和n。但是我不明白,如果是表示反斜線的話為什麼不雙反斜線轉義呢?而在雙引號中,n表示換行,t表示製表符。bun...