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";      # <--- 输出此行
}
相关文章
相关标签/搜索