一、簡介
Perl(Practical Extraction and Report Language),是一種高級、通用、直譯式、動態(tài)的程序語言,最具代表性的為正則表達式,也稱實用報表提取語言。
二、標量數(shù)據(jù)
1.標量數(shù)據(jù)分為數(shù)字和字符串。
2. 數(shù)字
- 所有數(shù)字的內(nèi)部結(jié)構(gòu)都一樣:整數(shù)和浮點數(shù)在Perl內(nèi)部都是以雙精度浮點數(shù)的要求來保存數(shù)據(jù)并進行運算的。
-
直接量(代碼中直接鍵入的數(shù)據(jù))的寫法
1.浮點數(shù)直接量:1.25; 255.000;-6.5e24
2.整數(shù)直接量:0; 2001; -30; 23_1111_7763(可下劃線區(qū)分)
3.非十進制的整數(shù)直接量:
o377 #八進制--255
0xff #十六進制--255
0b11111111 #二進制--255//前置0
- 數(shù)字操作符:
+ - * / %(取模) **(取冪)
取模:先取整數(shù)再求余
eg: 10.5%3.2等效于10%3
2**3---2的三次方
3. 字符串
- 字符串通常是由可輸出的字母,數(shù)字及標點符號組成。
- 如果要看到源代碼出現(xiàn)ASCII字符范圍以外的字符,需要加以下編譯指令:
use utf8 #Unicode編碼
- 字符串直接量
1.單引號內(nèi)的字符直接量
除了單引號和反斜杠字符外,單引號內(nèi)所有字符都代表他們自己,而要表示單引號或反斜杠,需要在此符號前加入反斜杠字符表示轉(zhuǎn)義。
' fred ' #共四個字符
‘ \’\\ ' #單引號和反斜杠兩個字符
2.雙引號內(nèi)的字符直接量
雙引號的反斜杠更為強大,可以轉(zhuǎn)義許多控制字符或者用八進制或十六進制寫法來表示任何字符。
" coke\tsprite " # coke、制表符(tab)和sprite
3.雙引號內(nèi)字符串的常見反斜線轉(zhuǎn)義
組合 意義
\n 換行
\r 回車
\t 水平制表符
\f 換頁符
\b 退格
4.字符串操作符
. #句號操作符,連接操作符
eg: "hello" . "world" # 等同于"helloworld"
x #字符串重復操作符
eg: "fred"x3 # "fredfredfred"
eg: 5x4.8 # "5555",先將數(shù)字5轉(zhuǎn)換成字符串"5"
且有操作數(shù)在使用前會先取整(4.8變成4)
重復次數(shù)小于1時,會生成程度為0的空字符串
3. 數(shù)字與字符串間的自動轉(zhuǎn)換
自動轉(zhuǎn)換完全取決于操作符
"12" *"3" #36
"12fred34" * "3" #也是36
‘o377’ #十進制377,"自動轉(zhuǎn)換總是按照十進制數(shù)字來處理"
前置0的技巧只對直接量有效,不能用于字符串的自動轉(zhuǎn)換
4. Perl內(nèi)置警告信息
法一: use warnings; # 能夠指定代碼的作用范圍
法二: perl -w my_lab.plx #此法對所有涉及代碼都開啟警告功能
法二也可以寫成: "#! /usr/bin/perl-w"
法三: use diagnostics
5. 標量變量
- 變量: 儲存一個或多個值的容器的名稱。
- 標量變量:單單存儲一個值的變量。
- 標量變量的名稱以美元符號開頭:$,區(qū)分大小寫
- 組成:由字母或下劃線開頭,后接多個字母數(shù)字或下劃線
$name
$Name #兩者為不同變量
6. 賦值
$fred = $fred + 5 ;
$fred += 5 ; #兩者等效,雙目賦值操作符
$str = $str . " " #在str的末尾追加一個空格字符
$str .= " " #作用同上
$barney = " fred ate a $meat " #如果meat未被賦值過,用空字符來替換
print "$barney" #雙引號是多余的
print $barney #變量內(nèi)插又叫雙引號內(nèi)插
print "The name is \$barney.\n" #會輸出$符號
print ' The name is $barney '."\n" #效果同上
$what = steak ;
$n = 3 ;
print "fred ate $n $whats .\n" ;此處引用的是$whats的值,而不是what
print "fred ate $n ${what}s .\n"
7. 借助代碼點創(chuàng)建字符
鍵入一些鍵盤上沒有的那些字符,可以直接鍵入這些字符的代碼點,再通過chr()函數(shù)轉(zhuǎn)換成對應(yīng)字符。
$alef = chr( 0x05D0 )
$alpha = chr( hex('03B1') ) ;
$code_point = ord('?');
"$alpha$omega"
"\x{03B1}\x{03C9}" #如果不預先創(chuàng)建變量,也可以在雙引號內(nèi)用\x{}的形式
8.比較操作符
大于或等于:>=
小于或等于:<=
<>,=>在perl里都有別的意義。
數(shù)值與字符串的比較操作符
比較 數(shù)字 字符串
相等 == eq
不等 != ne
小于 < 1t
大于 > gt
小于或等于 <= 1e
大于或等于 >= ge
9. 布爾值
數(shù)字:0為假,所有其他數(shù)字都為真
字符串:空字符串為假,其他字符為真
既不是字符也不是數(shù)字;先轉(zhuǎn)換成字符或數(shù)字再進行判斷
字符串'0'跟數(shù)字0是同一個標稱值 # "因為自動轉(zhuǎn)換都是以十進制進行轉(zhuǎn)換的"
10. 獲取用戶輸入
行輸入操作符<STDIN>:直到換行符為止 。
$line = <STDIN>
chomp( $text = <STDIN> ) ; # 讀入文字,略過最后的換行符
11. undef值
首次賦值前:變量值的初始值就是特殊的undef值,既不是數(shù)字,也不是字符串,他完全是另一種類型的標稱值。
判斷某個字符串是undef而不是空字符串
$madonna = <STDIN>
if ( defined(madonna) )
$m = undef # 自己創(chuàng)造undef值,回到從未用過的狀態(tài)