第二章 標量資料
perl中的標量表示的範圍很大,包括數字和字元/字串。而且數字也不像c中有浮點數,單精,雙精,整數...之分,只要是數字就是標量。而且所有的數字其內部格式都一樣,perl將整數儲存為浮點數,計算也是按照浮點數進行計算。
數字的表示方法:(在這方面還是可以看出perl的隨意性)
1.25
255.000
7.25e45
-6.5e24
-12e-24
-1.2e-23
0-40
61298040283768
61_298_040_283_768
(這個數字和上面的表示方法是相同的,只是現實生活中是用逗號,而這裡是用_。因為逗號已經有了更重要的作用)
0377
(八進位制的377)
0xff
(十六進製制的ff)
數值操作符:
2+3 (2加3=5,也可以在加號左右加上空格。perl這方面要求很寬鬆,下面等同)
5.1-2.4 (5.1減2.4=2.7)
3*12
14/2
10.2/0.3
10/3
10%3
(取餘,需要指出的是,如果2個數值是小數,則perl的處理方式先將小數化為整數,如10.5%3.2是按照10%3來計算的)
2××3
(2的3次冪)
單引號字串:單引號本身不是字串的一部分,用來讓perl確定字串的開始和結束。裡面就是字元的實際意思,不像雙引號字串有很多轉義。不過如果在單引號中要表示單引號和反斜槓怎麼要在前面多加乙個反斜槓。
'fred'
'''hello/n'
(這裡/n不是回車換行符,只是2個字元)
'/'//'
(乙個單引號,乙個反斜槓)
雙引號字串:將可以解釋很多轉義字元(見下表),並且雙引號裡可以內插變數。
"barney"
(和'barney'一樣的意思)
"hello world/n"
寫法含義
/n換行
/r回車
/t製表符
/f換頁
/b退格符
/a響鈴
/eesc
/007
任意的ascii碼的八進位制值(這裡007=響鈴)
/x7f
任意ascii碼的十六進製制值(這裡7f=刪除)
/cc任意ctrl鍵組合字元(這裡是ctrl-c)
//反斜槓
/"雙引號
/l下乙個字母小寫
/l所有後面的字母小寫直到/e
/u下乙個字母大寫
/u所有後面的字母大寫直到/e
/q新增反斜槓引用後面的非單詞字元,直到/e
/e結束/l、/u或/q
字串操作符:"." 和 "x"
.操作符就是用來字串連線的
"hello" . "world"
(結合起來就是"helloworld")
"hello" . ' ' . "world"
(結合起來就是"hello world")
x操作符叫做串重複操作符,後面跟數字代表重複次數
"fred" x 3
(fredfredfred)
5 x 4
(5555,注意,這裡也只能是整數進行串重複操作,如果小於1則等於空)
數字和字串的自動轉換:
在大多數情況下,perl會根據操作符來自動判斷物件是字串還是數字。這方面perl的處理很智慧型化,你可以開啟perl的警告開關,這樣你如果用的不合適,perl會提示你。也就是我在第一章裡的說的-w開關,用在perl程式的第一行。
標量變數:
perl的變數是以美元符號$開頭的,以字母或者下劃線開頭,並且分大小寫!
二元賦值操作符:
$fred += 5;
(等於$fred = $fred + 5)
$fred *= 3;
(等於$fred = $fred * 3)
$str .= " "
(等於$str = $str . " ")
優先順序:
perl的優先順序和c一模一樣^_^
比較操作符:
還是列一張表吧,看起來比較清楚:
比較數值
字串相等
==eq
不相等!=
ne小於
<
lt大於
>
gt小於等於
<=
le大於等於
>=ge
和shell的處理方式正好相反,一般人還是比較習慣這裡的處理方式。
如何記憶字串的關鍵字:其實都是英文單詞的所寫,只要弄明白什麼意思就ok了。具體如下(不一定準確^_^,方便記憶就好):eq=equal、ne=not equal、lt=less than、gt=great than、le=less than、ge=great than
if控制結構:
通過舉例來說明if語句的結構:
if ($name gt 'fred')
這是最簡單的if語句,沒有else段。下面再在上面的基礎上加上else:
if ($name gt 'fred') else
看到這裡我有個疑問。這兩個例子都是書上照搬下來的,按照我前面看的結果應該在print語句中$name不應該加上單引號,這樣才能真正顯示變數的內容。如果加了單引號不是就代表$name了?馬上試驗做分曉:在這段例子前面我加了$name="marco";
但是結果的顯示:
bash-2.05$ ./test.plx
'marco' ***es after 'fred' in sorted order.
說明單引號還是可以解釋變數內容的。不過我再繼續驗證單引號是否真的可以解釋變數,因此很簡單的寫了幾句話:
#!/usr/local/bin/perl -w
$named="marco";
print '$named';
結果確實報錯資訊:
bash-2.05$ ./test.plx
name "main::named" used only once: possible typo at ./test.plx line 2.
如果再在單引號的兩邊加上雙引號就ok了。輸出結果如下:
'marco'
原來如果單引號放在雙引號裡面時,單引號就是單引號,沒有任何其他意義。ok,明白了^_^
如何判斷布林值的真假?
如果標量值為undef、0、''、或者'0',那它就是假的。其他都為真。
取得使用者輸入:
應該有很多方法,不過現在先介紹這個操作符。一樣,舉例來說明:
$line=;
if ($line eq "/n") else
不用多解釋了,相信是地球人都看的懂的程式^_^。
undef值:
變數在第一次賦值之前它的值就是undef。如果把undef做為數字使用,其功能相當於0,因此它可以很方便的生成乙個以空開始的數值累加器:
#累加一些奇數:
$n=1;
while ($n < 10)
print "the total was $sum./n";
這個程式中$sum一開始沒有指定值,因此它開始是undef,因為是數字的加法,因此它就被用作0了。
而當這個變數被用作字元時,它的作用和空字元相似。
defined函式:
是專門用來檢測變數是否為undef的乙個函式,例子:
$madonna = ;
if ( defined($madonna) ) else
第二章 入門
第二章 入門 1 django 安裝 使用 django 的唯一先決條件是安裝 python 在 linux 平台可能包括如下步驟 2 tar xzvf django tar.gz。3 cd django 4 sudo python setup.py install。2 匯入 django模組 im...
第二章筆記
1.遞迴查詢和迭代查詢 遞迴查詢是一條環路,直接想成遞迴的定義就行,你想查乙個 的ip,首先將這個 傳給它的本地dns,然後認為本地dns可以直接將ip給你,然後本地dns為了知道這個ip又詢問下個dns伺服器。從此可以看出,增加了被涉及的伺服器的資料,所以一般用迭代查詢,迭代查詢是你詢問完後給你下...
C程式語言 第二章 筆記
第二章 型別 運算子與表示式 變數 變數和常量是程式處理的兩種基本資料物件 由於庫例程的名字通常以下劃線開頭,因此變數名不要以下劃線開頭 大小字母有區別 變數名使用小寫字母,符號常量名全部使用大寫字母 所有關鍵字都必須小寫 所有變數都必須先宣告後使用 任何變數的宣告都可以使用const限定符限定。該...