4.1.13 真假值
在 Perl 中,什麼是真?什麼是假?有一套特殊的定義。初入門者,應特別留意。
Perl 用以下方式來決定真假值:
1.0 為假,其它數值皆為真。
2.'0'、"0" 及空字串 ''、"" 為假,其它字串皆為真。
3.運算結果可以轉換成 "0" 者為假。
4.undef 這個特別值為假。
5.任何未定義的值為假。
6.上述假值定義之外,其餘為真。
我們來看一些例子:引用:
假值:
0
'0'
"0"
''
""
undef
10-10
0.0
'0.00' + 0 (請思考之)
真值:
1
11
22
-5
'0.00'
用例:
#! /usr/bin/perl
print "Sir, 請輸入: ";
$ans=<>;
chomp $ans;
if (!$ans) {
print "您沒有輸入任何東西!\n";
} else {
print "您輸入的是:$ans\n";
}
註 1:<> 是輸入符號,可由 標準輸入 取值。
註 2:chomp 是內建函式,可截去變數尾端的 \n 換行字元。
上述檢查只做一次就結束了,沒有太大意義,最好使用迴圈:引用:
#! /usr/bin/perl
while (!$ans) {
print "Sir, 請輸入: ";
$ans=<>;
chomp $ans;
if (!$ans) { print "您沒有輸入任何東西!\n\n"; }
}
print "您輸入的是:$ans\n\n";
上面這個例子有個缺點:當使用者輸入 0 時,由於 0 為假值,會被 !$ans 誤判為沒有輸入任何東西,解決的方法之一是採用:檢查$ans 的長度來判斷有無輸入資料?如下所示:引用:
#! /usr/bin/perl
while (length($ans)==0) {
print "Sir, 請輸入: ";
$ans=<>;
chomp $ans;
if (length($ans)==0) { print "您沒有輸入任何東西!\n\n"; }
}
print "您輸入的是:$ans\n\n";