二:標量資料(筆記)

tonykorn97發表於2007-06-19

開始學習perl了。


大部分的標量不是數值就是由字元所組成的字串構成。

1,數值
2,字串
字串是一連串的字元。字串可以包含各種字元的任意組合。最短的字串時不含字元的空字串。

2.1,單引號的字串直接量指的是一對單引號所括住的一串字元。前後兩個單引號並不屬於字串的一部分,它們只是用來讓perl識別字串

的開頭與結尾。單引號和反斜線字元除外,單引號內所有字元都代表它們本身(在字串跨越數行時也包括換行字元)。要標示反斜線本身時

,需要連續兩個反斜線;要表示單引號本身,則將反斜線接著單引號。

2.2,雙引號內的雙字串直接量和單引號內的字串一樣,它也是一連串的字元,不過是被括在一對雙括號裡面,但是雙引號內的反斜線擁有

完整的能力,可用來表示控制字元或透過八進位制及十六進位制來表示任何字元。

幾個特殊的跳脫字元
l 將下個字元轉為小寫
L 將到E為止的所有字元轉為小寫
u 將下各字元轉為大寫
U 將到E為止的所有字元轉為大寫
Q 將到E為止的非文字字元加上反斜線
E 結束L,U或Q


2.3,字串運算子
字串可以用.運算子來彼此連線(concatenation).
字串複製(string repetition)運算子是個特殊的字串運算子,它是一個小寫字母x。此運算子會將左邊的運算元(operand)與它本身重複

連線,次數則有右邊的運算元指定。
"hello" . "world" #與"helloworld"相同
"hello" . '' . "world" #與"hello world"相同
"fred" x 3 #也就是"fredfredfred"

3,數字與字串之間的自動轉換
通常,perl會視需要自動在數字和字串之間進行轉換。它如何知道需要的數字或字串呢?這完全靠作用在標量值上的運算子來決定。如果

運算子需要的是數字(例如+),perl就會將操作視為數字;在運算子需要字串時(例如.),perl便會將運算元視為字串。


4,perl的內建警告資訊

4.1,要在執行程式時啟用警告功能,使用-w命令列選項
perl -w my_program
4.2, 如果想讓該程式每次執行都啟用警告資訊,可以利用開頭的#!行來指明
#!/usr/bin/perl -w
4.3, perl 5.6之後的版本也可以利用warnings這個編譯命令來啟用警告功能
#!/usr/bin/perl
use warnings;
利用diagnostics這個編譯命令可以看到較詳細的問題描述。
#!/usr/bin/perl
use diagnostics;

5, 標量變數
變數(variable)就是某個容器的名稱,裡面可以儲存一個或多個值。變數的名稱在程式執行期間保持不變,但是變數裡的值通常會不斷改

變。
標量變數的名稱是以美元符號($)開頭,後面接著所謂的"perl識別符號":一個字母或下劃線,後面還可以接更多的字母,數字或下劃線。
在perl裡,標量變數總是以$開頭。

6,標量的賦值運算
標量變數的操作中最常見的便是賦值運算,也就是將某個值存進變數裡。perl以等號為賦值運算子,左邊是變數名稱,右邊的表示式則是用

來賦予變數的值。
$fred = 17; #將$fred的值設為17
$fred = $fred + 3; #將$barney設為$fred當前值加上3(即20)

7,雙目賦值運算子
因為像$fred = $fred + 5 這樣的表示式會經常出現,所以perl提供了更新變數內容的簡寫方式,也就是雙目賦值運算子。
$fred = $fred +5; #不使用雙目賦值運算子
$fred += 5; #使用雙目賦值運算子

$fred = $fred * 3;
$fred *= 3;

另一個常見的雙目賦值操作賦,就是由字串連線運算子(.)改造而成的新增運算子(.=)
$fred = $fred . " "; # 在$fred後面加一個空白
$fred .= " "; # 用新增操作副做一樣的事情

8, 用print輸出結果

9, 在字串裡替換標量變數
當字串放進雙引號內時,除了會檢查反斜線跳脫字元外,也會進行變數替換(variable interpolation).字串裡的任何標量變數名稱,

都會被替換成該變數的當前值。

$meal = "brontosaurus steak";
$barney = "fred ate a $meal"; # $barney 現在是"fred ate a brontosaurus steak"
$barney = 'fred ate a ' . $meal; # 另外一種寫法

10,運算子的優先順序與結合性

11, 比較運算子
比較 數值 字串
相等 == eq
不等 != ne
小於 < lt
大於 > gt
小於或等於 <= le
大於或等於 >= ge

12, if控制結構
if ($name gt 'fred'){
print "'$name' comes after 'fred' in sorted order. ";
}

13, 取得使用者的輸入
輸入運算子 ,程式程式碼裡能出現標量值的地方只要放上,perl就會從"標準輸入"讀進一行文字(讀取到換行符為止).
$line = ;
if ($line eq " "){
print "That was just a blank line ! ";
} else {
print "That line of input was: $line";
}

14, chomp運算子
它只能用在一種變數上,該變數的內容必須為字串。如果此字串的結尾是換行符,chomp就會將它移除。
$text = " a line of test "; #假設是從讀進來的
chomp ($text); #去除換行符

chomp($test = ); #讀入文字,略過最後的換行符。

$text = ;
chomp($text);

字串後面如果有兩個以上的字元,chomp只會刪除一個,如果結尾處沒有換行符,chomp就不會起作用並且會返回0。

15,while控制結構
在while迴圈中,只要條件式持續為"真",就會不斷的執行塊裡的程式程式碼
$count = 0
while ($count < 10) {
$count +=2;
print "count is now $count "; #顯示2 4 6 8 10
}

16,undef值
如果用到某個變數卻還沒有對它進行賦值,那麼變數的初始值就是undef(未定義).

17,defined函式
要判斷某個字串是undef而不是空字串,可以使用define函式。這個函式對undef會返回"假",對其他引數則都會返回"真";
$madonna = ;
if ( defined($madonna) ) {
print "The input was $madonna";
} else {
print "No input available! ";
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245686/,如需轉載,請註明出處,否則將追究法律責任。

相關文章