Perl:undef類型和defined()函數

undef和defined()函數

undef表示的像是數據庫中的"null"。它表示空,啥也沒有,是徹底未定義的。這不等於字符串的空,不等於數值0,它是另外一種類型。shell

在某些時候,perl程序本該報錯的時候(如使用未賦值的變量,參數越界,讀取文件時到了文件結尾eof),perl實際上不會報錯,而是返回undef。但若是開啓了warnings功能,則這種類型的問題,某些狀況下會給出warning信息,而不是返回undef。數據庫

通常狀況下,將其看成空或0就行了,由於在須要數值的時候,undef表明的就是0,須要字符串的時候,undef就是空字符串。bash

因此,perl中的徹底能夠直接使用未定義的變量,由於未定義的變量起始就是undef。它能夠被看成0,也可被看成空字符串。函數

例如,下面兩個語句中,$sum和$str都是未定義的,初始時它們分別表示數值0和空字串''。code

$sum += $i;
$str .= "abc";

能夠直接將undef關鍵字賦值給某個變量,表示這個變量是undef的,這能夠取消一個變量的定義。至關於bash shell中的unset。字符串

$line=undef;

若是想要判斷這個undef確實是undef而不是字符串的空,能夠使用defined()函數。若是是undef,則該函數返回false,不然返回true。變量

if(defined($ma)){
    print "valid var\n";
}else{
    print "invalid var\n";      # <--- 輸出此行
}
相關文章
相關標籤/搜索