2-3 數值和字串的互換與比較

文章推薦指數: 80 %
投票人數:10人

但在其他少數情況下,數值和字串的通用性可能導致程式的錯誤,此時就需要程式設計者的介入。

以下是Perl 的比較運算元(Comparison Operators):. 比較運算說明, 用於數值 ... 2-3數值和字串的互換與比較 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的比較運算元(ComparisonOperators): 比較運算說明用於數值的運算元用於字串的運算元 相等==eq 不相等!=ne 小於gt 小於或等於<=le 大於或等於>=ge 由於數值和字串的排序方法並不相同,因此我們必須對數值和字串定義兩套不同的比較運算元。

數值的比較是根據數值的大小,因此下列程式碼的條件判斷將成立,並會印出"20>8istrue!": if(20>8){ print("20>8istrue!"); } 而字串的比較是根據其ASCII內碼的大小,因此下列程式碼的條件判斷亦將成立(由於運算元是「lt」,20及8會被視為字串),並會印出"20lt8isalsotrue!": if(20lt8){ print("20lt8isalsotrue!"); } 在未進行設定之前,數值變數的預設值是0,而字串變數的預設值是""(空字串)。

若變數$x未定義,則下列程式碼會依運算元而有不同之結果: $a=$x+1; #$x=0,$a=1 $str="Test".$x; #$x="",$str="Test" 若希望Perl能檢查到未定義之變數,則可以在呼叫Perl時,加入「-w」的選項(w代表warning),例如可用下列方式來執行myprogram.pl: perl-wmyprogram.pl Perl



請為這篇文章評分?