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