前言:
定義:單複數概念----標量即單個事物,perl 用標量(perl 中最簡單的一種資料類型)來稱呼單件事物。 對大部分的標量來說,要麼是數字,要麼是由字元組成的串(perl 中不存在單個字元的概念,一個字串整體就是單個事物)。
關聯:而標量之間又可以使用操作符(比如加法或字串串連)來關聯,產生的結果也是一個標量。
來源和去處:標量可以儲存在標量變數裡,也可以從檔案和裝置讀取(或寫入這些位置)。
1.數字
所有數位內部格式都相同:不管是整數還是浮點數,在perl內部,均按“雙精確度浮點數”(即當初用來編譯perl的C編譯其的double類型,大部分現代系統均使用IEEE-745的格式)的要求來儲存並進行運算。
浮點數直接量:
直接量的概念:直接量(literal:即字面值常量)是某個數值在perl 代碼中的書寫方式。直接量並非運算的結果,也不是I/O操作的結果,而是直接寫在程式原始碼裡的資料。
直接量的寫法:一般寫法:12.45;科學計數法:-6.5e24:負6.5乘以10的24次方(e也可以大寫成E)。
整數直接量:2001、-59、23455432等。
註:為使看起來清晰,perl允許2345432也可以這樣表示:2_345_54_32。
非十進位的整數直接量:
八進位:以0(零)開頭,如037-----對應十進位:225
十六進位:以0x(零)開頭,如0xFF----對應十進位:225
二進位:以0b(零)開頭,0b11111111----對應十進位:225
即以上三個數完全等價,且0b11111111也可以寫成:0b1111_1111(清晰很多)。
數字操作符:加法(+)、減法(-)、乘法(*)、除法(/)、模數(%)以及乘冪(**)等。
2.字串
定義:perl 中字串可以由任一字元任意組合而成,且Null 字元(NUL)在perl 裡並沒有特殊意義,因為perl 會另行記住字串的長度,而不是用Null 字元來表示字串的結尾。
特性:最短的字串為不含任何字元的Null 字元串;最長的字串長度則無限制-------符合perl 儘可能遵循的“無內建限制”原則。
形式:
單引號:單引號內的字串,除了單引號本身和反斜線字元外,單引號內所有字元均代表他們自己。
雙引號:與單引號類似,但雙引號內的字串直接量的反斜線字元擁有更大更完整的能力,可以用來表示控制字元或用八進位(或十六進位)寫法來表示任何字元。
註:反斜線轉義:通過反斜線加上各種不同的字元,以代表不同格式的資料。
-----------------------------Linux 中單引號和雙引號--------------------------------------------------------------
Linux中單引號和雙引號都能關閉shell對特殊字元的處理,不同的是:
單引號更加嚴格,它關閉所有有特殊作用的字元。
而雙引號會放開3個選項,具體為:(1)貨幣符號:$;(2)反引號:~;(3)反斜線:\ 。即這三種字元不被忽略(有特殊意義)。
---------------------------------------結束------------------------------------------------------------------------------
字串操作符:“.”:連接字串;“* a”:重複串連,重複次數為a;
數字與字串之間的自動轉換:根據具體情況,perl 自動轉換。字串轉換為數字時:忽略字串中前置空白符和非數字部分(若沒有一個數字,則轉換為0);數字
轉換為字串時,數字轉換為(輸出效果)相同的字串------ 一切無需程式員操心,perl 自動完成資料轉換的工作。
3.perl 內建警告資訊
當偵錯工具是,想顯示程式警告資訊,讓perl 發出警告,使用 -w 選項,開啟警告功能。如,perl -w my_program
若想每次運行均啟用警告功能,可以使用#!行來指明: #! /usr/bin/perl -w
註:在perl 5.6或者更高的版本中,還可通過啟用 warnings這個編譯命令來開啟警告功能:
#! /usr/bin/perl
user warnings;
而若要查看更加詳細的問題描述:perl -M diagnostics 或use diagnostics; -------該編譯命令會到時程式啟動變慢。
4.變數標量
定義:變數即某個容器的名稱,可以儲存一個或多個值。
perl 標識符:一個字母或底線為首,後面可以跟上多個字元、數字或底線。且標量變數明前總有 $ 符號。
慎選變數名稱:見名知意,保持一致。
標量的賦值(=)和雙目賦值操作符(+=、-=...)
5.用print 輸出結果
預設向螢幕輸出,如輸出多個值時用逗號隔開。
字串中的標量變數插入:雙引號內或與單引號串連兩種方式。
一些經驗:通過逸出字元可輸出特殊字元以及變數本身;可以將變數用花括弧圍起來,避免歧義。
操作符的優先順序和結核性:
比較操作符:
比較 |
數值 |
字串 |
相等 |
== |
eq |
不等 |
!= |
ne |
小於 |
< |
lt |
大於 |
> |
gt |
小於或等於 |
<= |
le |
大於或等於 |
>= |
ge |
6.if 控制結構
布爾值:perl 中沒有專用的“布爾”(Boolean)資料類型,它靠以下規則來判斷:
(1)如果值為數字,0為假;其他為真。
(2)如果值為字串,Null 字元串(’‘)為假;其他為真。
(3)如果既不是數字也不是字串,就先轉換成數字或字串再進行判斷。
註:由於字串’0‘ 和數字0是同一標量值,所以perl一視同仁,均看成假。
擷取使用者輸入:最簡單方式:<STDIN> ,如$line=<STDIN>為讀取標準輸入到標量值line中直到遇到分行符號(即按下斷行符號鍵)。
註:<STDIN> 返回的字串,一般在最後都會跟有一個分行符號(除非異常終止)。
7.chomp 操作符
刪除字串結尾處的分行符號。本質上是函數,傳回值為:實際移除的字元數(一般為1)。
8. undef 變數和defined 函數:
undef:在首次被賦值前,變數的初始值就是特殊的undef(未定義--”空無一物“):一種資料類型:既不是數字也不是字串。
但是,undef在需要的時候可隨機轉換:當作為數字時,轉換為零;當作為字串時,轉換為空白字串。
例如,“行輸入”操作符<STDIN>有時會返回undef:當讀到檔案結尾時,會返回undef 來表示這個狀況。
defined函數:判斷某個字串或數字是否為undef。若是undef則返回假;否則返回真。