- Perl 基礎
- Perl - 首頁
- Perl - 簡介
- Perl - 環境
- Perl - 語法概述
- Perl - 資料型別
- Perl - 變數
- Perl - 標量
- Perl - 陣列
- Perl - 雜湊
- Perl - IF...ELSE
- Perl - 迴圈
- Perl - 運算子
- Perl - 日期和時間
- Perl - 子程式
- Perl - 引用
- Perl - 格式
- Perl - 檔案 I/O
- Perl - 目錄
- Perl - 錯誤處理
- Perl - 特殊變數
- Perl - 編碼規範
- Perl - 正則表示式
- Perl - 傳送郵件
- Perl 高階
- Perl - 套接字程式設計
- Perl - 面向物件
- Perl - 資料庫訪問
- Perl - CGI 程式設計
- Perl - 包和模組
- Perl - 程序管理
- Perl - 嵌入式文件
- Perl - 函式引用
- Perl 有用資源
- Perl - 常見問題解答
- Perl - 快速指南
- Perl - 有用資源
- Perl - 討論
Perl - 變數
變數是保留的記憶體位置,用於儲存值。這意味著當你建立一個變數時,你在記憶體中保留了一些空間。
根據變數的資料型別,直譯器分配記憶體並決定可以在保留的記憶體中儲存什麼。因此,透過為變數分配不同的資料型別,你可以在這些變數中儲存整數、小數或字串。
我們已經瞭解到 Perl 有以下三種基本資料型別:
- 標量
- 陣列
- 雜湊
相應地,我們將在 Perl 中使用三種類型的變數。一個標量變數前面會加上一個美元符號 ($),它可以儲存數字、字串或引用。一個陣列變數前面會加上符號 @,它將儲存標量的有序列表。最後,雜湊變數前面會加上符號 %,並將用於儲存鍵/值對的集合。
Perl 將每種變數型別儲存在單獨的名稱空間中。因此,你可以放心地為標量變數、陣列或雜湊使用相同的名稱。這意味著 $foo 和 @foo 是兩個不同的變數。
建立變數
Perl 變數不必顯式宣告來保留記憶體空間。當你為變數賦值時,宣告會自動發生。等號 (=) 用於為變數賦值。
請注意,如果我們在程式中使用use strict語句,則在使用變數之前宣告變數是強制性的。
= 運算子左側的運算元是變數的名稱,= 運算子右側的運算元是儲存在變數中的值。例如:
$age = 25; # An integer assignment $name = "John Paul"; # A string $salary = 1445.50; # A floating point
這裡 25、"John Paul" 和 1445.50 分別是分配給$age、$name 和$salary變數的值。稍後我們將看到如何為陣列和雜湊賦值。
標量變數
標量是單個數據單元。該資料可能是整數、浮點數、字元、字串、段落或整個網頁。簡單地說,它可以是任何東西,但只能是一件事。
這是一個使用標量變數的簡單示例:
#!/usr/bin/perl $age = 25; # An integer assignment $name = "John Paul"; # A string $salary = 1445.50; # A floating point print "Age = $age\n"; print "Name = $name\n"; print "Salary = $salary\n";
這將產生以下結果:
Age = 25 Name = John Paul Salary = 1445.5
陣列變數
陣列是一個變數,它儲存標量值的排序列表。陣列變數前面帶有“at”(@)符號。要引用陣列的單個元素,您將使用美元符號 ($) 加上變數名稱,後跟方括號中元素的索引。
這是一個使用陣列變數的簡單示例:
#!/usr/bin/perl
@ages = (25, 30, 40);
@names = ("John Paul", "Lisa", "Kumar");
print "\$ages[0] = $ages[0]\n";
print "\$ages[1] = $ages[1]\n";
print "\$ages[2] = $ages[2]\n";
print "\$names[0] = $names[0]\n";
print "\$names[1] = $names[1]\n";
print "\$names[2] = $names[2]\n";
這裡我們在 $ 符號前使用了轉義符 (\),只是為了列印它。否則 Perl 會將其理解為變數並列印其值。執行後,這將產生以下結果:
$ages[0] = 25 $ages[1] = 30 $ages[2] = 40 $names[0] = John Paul $names[1] = Lisa $names[2] = Kumar
雜湊變數
雜湊是一組鍵/值對。雜湊變數前面帶有百分號 (%) 符號。要引用雜湊的單個元素,您將使用雜湊變數名稱,後跟花括號中與該值關聯的“鍵”。
這是一個使用雜湊變數的簡單示例:
#!/usr/bin/perl
%data = ('John Paul', 45, 'Lisa', 30, 'Kumar', 40);
print "\$data{'John Paul'} = $data{'John Paul'}\n";
print "\$data{'Lisa'} = $data{'Lisa'}\n";
print "\$data{'Kumar'} = $data{'Kumar'}\n";
這將產生以下結果:
$data{'John Paul'} = 45
$data{'Lisa'} = 30
$data{'Kumar'} = 40
變數上下文
Perl 根據上下文(即變數使用的情況)對同一個變數進行不同的處理。讓我們檢查以下示例:
#!/usr/bin/perl
@names = ('John Paul', 'Lisa', 'Kumar');
@copy = @names;
$size = @names;
print "Given names are : @copy\n";
print "Number of names are : $size\n";
這將產生以下結果:
Given names are : John Paul Lisa Kumar Number of names are : 3
這裡 @names 是一個數組,它在兩種不同的上下文中使用。首先,我們將其複製到另一個數組(即列表)中,因此它返回所有元素,假設上下文是列表上下文。接下來,我們使用了同一個陣列並嘗試將其儲存在一個標量中,因此在這種情況下,它只返回此陣列中的元素數量,假設上下文是標量上下文。下表列出了各種上下文:
| 序號 | 上下文和描述 |
|---|---|
| 1 | 標量 分配給標量變數會以標量上下文計算右側。 |
| 2 | 列表 分配給陣列或雜湊會以列表上下文計算右側。 |
| 3 | 布林值 布林上下文僅僅是任何評估表示式以檢視其真假的地方。 |
| 4 | 空值 此上下文不僅不關心返回值是什麼,甚至也不想要返回值。 |
| 5 | 插值 此上下文僅在引號內或類似引號的東西中發生。 |