天天看點

《Perl語言入門》之一——标量資料

數字

在Perl内部,所有數字按照雙精度浮點數來儲存和運算。

對于非十進制的整數直接量——八進制以0開頭(如0377),十六進制以0x開頭,二進制以0b開頭。對于非常長的數字(例如 0x00411137和987654321),可以用下劃線分割(如0x0041_1137和987_654_321)

字元串

Perl的字元串沒有長度限制,而且完全支援Unicode,可以在字元串中使用任意的Unicode字元。不過由于曆史原因。它不會自動将源代碼當作Unicode編碼的文本讀入,是以如果想要使用Unicode書寫的直接量,必須手工加上utf8編譯指令。

字元串有兩種書寫方式:單引号内的字元串和雙引号内的字元串——單引号内所有的字元都代表它們自己,除了部分由反斜線表示的轉意字元;雙引号中的反斜線更為強大,可以轉意很多控制字元。為了更清楚地區分如何使用單引号和雙引号,可以在由單個字元組成的簡單字元串中使用單引号,其他包括轉意、插入變量等情形都使用雙引号。

'barney' #單引号内的簡單字元串 
"Hello world\n $version \x{2668}" #雙引号内的字元串      

進行變量内插時,Perl會盡可能使用最長且合法的變量名稱,要是你想在内插的值後面緊接着輸出字母、數字和下劃線,可能會碰上麻煩。同其他shell腳本一樣,Perl裡我們可以用一對花括号将變量名圍起來以避免歧義,或者可以先把字元串拆成兩半,再利用連接配接操作符拼接起來。

常用的字元串操作符有兩種——字元串連接配接(".")和字元串重複("x")

'hello' . 'world' #等同于"helloworld" 
'fred' x 3 #等同于'fredfredfred'      

标量變量

所謂變量,就是存儲一個或多個值得容器的名稱。而标量變量,就是隻存儲一個值得變量,還有其他類型變量,例如數組和哈希,它們都可以存儲多個值。

Perl程式裡面大部分變量名稱都習慣使用小寫,如果變量名不止一個單詞,可以使用下劃線分開($underscores_are_cool)或者駝峰命名法($giveMeInitialCaps)

布爾值

Perl沒有專用的Boolean資料類型,它是靠一些簡單的規則來判斷的:

  • 如果是數字,0為假,其他為真
  • 如果是字元串,空字元串為假,其他為真('0'比較特殊,值為假)
  • 如果既不是數字也不是字元串,就先轉換成數字或字元串再行判斷。

這裡還有個小技巧,由于'!'可以颠倒真假值,而Perl有沒有專門的布爾類型變量,是以人們常常把布爾值歸一化到以下兩個值來表示:

$still_true = !! '1' 
$still_false = !! '0'      

其他常用的規則

慣例一:任何需要變量的地方,都可以用指派運算表達式代替。實際上Perl會先做複制運算,然後傳回複制後的變量。

chomp($test = <STDIN>); # 讀入文字,略過最後的換行符      
$text = <STDIN>;
chomp $text;      
# 累加一些奇數 
$n = 1; 
while ($n < 20) { 
    $sum +=$n; 
    $n += 2; #準備下一個奇數 
}