2-3%20%BC%C6%AD%C8%A9M%A6r%A6%EA%AA%BA%A4%AC%B4%AB%BBP%A4%F1%B8%FB

Perl 將數值和字串視為一體,並會自行進行必要之轉換,例如: $str = "XYZ" . (3*4*5); Perl 看到「.」,知道要進行自串的連結,所以會先進行 3*4*5 的數值運算,得到 60,再將之轉換成字串 "60",最後和 "XYZ" 連結在一起,因此 $str 的值就是 "XYZ60"。再看看下面一個例子: $num = "123.45Miracle" + 1; Perl 看到加號,知道要進行數值加法,所以會先將字串 "123.45Miracle" 轉成數值,得到 123.45,再加上 1,因此 $num 最後的值就是 124.45。

一般而言,Perl 會根據運算元來判斷運算元所需的資料型態,來進行字串和數值之間的相互轉換,其轉換結果大部分都能符合使用者的需求。但在其他少數情況下,數值和字串的通用性可能導致程式的錯誤,此時就需要程式設計者的介入。

以下是 Perl 的比較運算元(Comparison Operators):

比較運算說明用於數值的運算元用於字串的運算元
相等==eq
不相等!=ne
小於<lt
大於>gt
小於或等於<=le
大於或等於>=ge

由於數值和字串的排序方法並不相同,因此我們必須對數值和字串定義兩套不同的比較運算元。數值的比較是根據數值的大小,因此下列程式碼的條件判斷將成立,並會印出 "20 > 8 is true!":

if (20 > 8) { print("20 > 8 is true!"); } 而字串的比較是根據其 ASCII 內碼的大小,因此下列程式碼的條件判斷亦將成立(由於運算元是「lt」,20 及 8 會被視為字串),並會印出 "20 lt 8 is also true!": if (20 lt 8) { print("20 lt 8 is also true!"); } 在未進行設定之前,數值變數的預設值是 0,而字串變數的預設值是 ""(空字串)。若變數 $x 未定義,則下列程式碼會依運算元而有不同之結果: $a = $x + 1; # $x = 0, $a = 1 $str = "Test" . $x; # $x = "", $str = "Test" 若希望 Perl 能檢查到未定義之變數,則可以在呼叫 Perl 時,加入「-w」的選項(w 代表 warning),例如可用下列方式來執行 myprogram.pl: perl -w myprogram.pl
Perl