Like Share Discussion Bookmark Smile

J.J. Huang   2021-03-06   Perl   瀏覽次數:

Perl - 第三章 | Perl 資料類型

Perl 是一種弱語言,所以變量不需要指定類型,Perl 解釋器會根據上下文自動選擇匹配類型。
Perl 有三個基本的資料類型:標量、數組、哈希。以下是這三種資料類型的說明:

Sr.No. 類型與說明
1 標量:標量是簡單的變量。它們前面帶有一個美元符號($)。標量可以是數字,字符串或引用。引用實際上是變量的地址,我們將在接下來的章節中看到它。
2 數組:數組是用數字索引訪問的標量的有序列表,數字索引以0開頭。它們前面帶有“at”符號(@)。
3 哈希:哈希是你使用鍵作為下標訪問的key/value對的無序集合。它們前面有一個百分號(%)。

數字文字

Perl 在內部將所有數字存儲為帶符號整數或雙精度浮點值。數字文字以以下任何浮點或整數格式指定:

類型 價值
整數 1234
負整數 -100
浮點數 2000.1
科學計數法 16.12E14
十六進制 0xffff
八進制 0577
  • 整數
    Perl 實際上把整數存在你的計算機中的浮點寄存器中,所以實際上被當作浮點數看待。
    在多數計算機中,浮點寄存器可以存貯約16位數字,長於此的被丟棄。整數實為浮點數的特例。
    整型變量及運算:

    1
    2
    3
    4
    $x = 12345;
    if (1217 + 116 == 1333) {
    # Do something...
    }

    8進制和16進制數:8進制以0開始,16進制以0x開始。例如:

    1
    2
    $var1 = 047;    # 等於十進制的39
    $var2 = 0x1f; # 等於十進制的31
  • 浮點數
    浮點數資料如:11.4 、 -0.3 、.3 、 3. 、 54.1e+02 、 5.41e03。
    浮點寄存器通常不能精確地存貯浮點數,從而產生誤差,在運算和比較中要特別注意。指數的範圍通常為-309到+308。例如:

    1
    2
    3
    4
    5
    6
    #!/usr/bin/perl 

    $value = 9.01e+21 + 0.01 - 9.01e+21;
    print ("第一個值為:", $value, "\n");
    $value = 9.01e+21 - 9.01e+21 + 0.01;
    print ("第二個值為:", $value, "\n");

    執行以上程序,輸出結果為:

    1
    2
    第一個值為:0
    第二個值為:0.01

字符串文字

字符串是字符序列。它們通常是用單引號(’)或雙引號(“)引起來的字母數字值,它們的工作方式與 UNIX Shell 引號非常相似,你可以在其中使用單引號字符串和雙引號字符串。

雙引號字符串文字允許變量插值,而單引號字符串則不允許。當某些字符以反斜杠開頭時,它們具有特殊含義,並且用於表示換行符(\n)或製表符(\t)。

你可以將換行符或以下任何Escape序列直接嵌入雙引號字符串中:

轉義序列 意義
\ 反斜杠
' 單引號
" 雙引號
\a 警報或鈴聲
\b 退格鍵
\f 換頁
\n 新隊
\r 回車
\t 水平標籤
\v 垂直標籤
\0nn 建立八進制格式的數字
\xnn 建立十六進制格式的數字
\cX 控製字符,x可以是任何字符
\u 將下一個字符強制為大寫
\l 強制下一個字符轉換為小寫
\U 強制所有以下字符大寫
\L 強制所有以下字符轉換為小寫
\Q 反斜杠以下所有非字母數字字符
\E 結束\ U,\ L或\ Q

例子:
讓我們再次看看字符串在單引號和雙引號之間的行為。在這裡,我們將使用上表中提到的字符串轉義符,並將使用標量變量來分配字符串值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/perl

# This is case of interpolation.
$str = "Welcome to \nmorosedog.gitlab.io!";
print "$str\n";

# This is case of non-interpolation.
$str = 'Welcome to \nmorosedog.gitlab.io!';
print "$str\n";

# Only W will become upper case.
$str = "\uwelcome to morosedog.gitlab.io!";
print "$str\n";

# Whole line will become capital.
$str = "\UWelcome to morosedog.gitlab.io!";
print "$str\n";

# A portion of line will become capital.
$str = "Welcome to \Umorosedog\E.gitlab.io!";
print "$str\n";

# Backsalash non alpha-numeric including spaces.
$str = "\QWelcome to morosedog's family";
print "$str\n";

這將產生以下結果:

1
2
3
4
5
6
7
Welcome to
morosedog.gitlab.io!
Welcome to \nmorosedog.gitlab.io!
Welcome to morosedog.gitlab.io!
WELCOME TO MOROSEDOG.GITLAB.IO!
Welcome to MOROSEDOG.gitlab.io!
Welcome\ to\ morosedog\'s\ family


註:以上參考了
Tutorialspoint, Perl - Data Types