變數是儲存在記憶體中的數據,創建一個變數即會在記憶體上開闢一個空間。
解釋器會根據變數的類型來決定其在記憶體中的儲存空間,因此你可以為變數分配不同的資料類型,如整數、浮點型、字串等。
上一章節我們已經為大家介紹了Perl的三個基本的資料型態:標量、陣列、雜湊。
標量$ 開始, 如$a $b 是兩個標量。數組@ 開始, 如@a @b 是兩個數組。
哈希% 開始, %a %b 是兩個哈希。
Perl 為每個變數類型設定了獨立的命令空間,所以不同類型的變數可以使用相同的名稱,你不用擔心會發生衝突。例如$foo 和@foo 是兩個不同的變數。
變數不需要明確宣告類型,在變數賦值後,解釋器會自動指派匹配的類型空間。
變數使用等號(=)來賦值。
我們可以在程式中使用use strict語句讓所有變數需要強制宣告類型。
等號左邊為變量,右邊為值,實例如下:
$age = 25; # 整數$name = "codercto"; # 字串$salary = 1445.50; # 浮點數
以上程式碼中25, "codercto" 和1445.50 分別賦值給$age , $name和$salary變數。
接下來我們會看到數組和哈希的使用。
標量是一個單一的資料單元。資料可以是整數,浮點數,字符,字串,段落等。簡單的說它可以是任何東西。以下是標量的簡單應用:
以上程式執行輸出結果為:
Age = 25Name = coderctoSalary = 1445.5
數組是用來儲存一個有序的標量值的變數。
數組@ 開始。
要存取數組的變量,可以使用美元符號($)+變量名,並指定下標來訪問,實例如下所示:
以上程式執行輸出結果為:
$ages[0] = 25$ages[1] = 30$ages[2] = 40$names[0] = google$names[1] = codercto$names[2] = taobao
程式中我們在$ 標記前使用了轉義字元() ,這樣才能輸出字元$。
哈希是一個key/value對的集合。
哈希% 開始。
如果要存取哈希值,可以使用$ + {key}格式來存取:
以上程式執行輸出結果為:
$data{'google'} = 45$data{'codercto'} = 30$data{'taobao'} = 40
所謂的上下文:指的是表達式所在位置。
上下文是由等號左邊的變數類型決定的,等號左邊是標量,則是標量上下文,等號左邊是列表,則是列表上下文。
Perl 解譯器會根據上下文來決定變數的類型。實例如下:
以上程式執行輸出結果為:
名字為: google codercto taobao名字數為: 3
代碼中@names 是一個數組,它應用在了兩個不同的上下文中。第一個將其複製給另外一個數組,所以它輸出了數組的所有元素。第二個我們將陣列賦值給一個標量,它傳回了陣列的元素個數。
以下列出了多種不同的上下文:
序號 | 情境及描述 |
---|---|
1 | 標量− 賦值給一個標量變量,在標量上下文的右側計算 |
2 | 列表− 賦值給一個數組或哈希,在列表上下文的右側計算。 |
3 | 布爾− 布林上下文是一個簡單的表達式計算,查看是否為true 或false。 |
4 | Void − 這種上下文不需要關係回傳什麼值,一般不需要回傳值。 |
5 | 內插− 這種上下文只發生在引號內。 |