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

插值

此上下文僅在引號內或類似引號的東西中發生。

廣告

© . All rights reserved.