- 毅力与勇气是事业的双飞翼; - 在尝试中成长,在失败中奋起。 - 概览 -> 细读 -> 概览 - 书不在多,在于精。
分类: LINUX
2014-11-20 11:03:57
在使用perl的时候会经常出现某个标量或列表的元素没有赋值或是undef,又有时候会对其进行赋值为空,那么这里面的undef和空有什么区别呢?
首先这里面有一个函数就是defined,他是用来判断一个标量或其他量是否是undef的,也就是判断该变量是否是被赋过值的,其实这里当一个变量被声明之后通常他是没有被赋值的,所以该函数就是用来完成这个工作的。未赋值的时候,他对外显示的应该是什么也没有,这和给标量赋值空的时候对外显示一样,但是本质却是完全不同的,赋值为空也是一种赋值,与未赋值是两种不同的情况,即使对外显示相同,但是defined却能够明明白白的知道两者之间的不同,用defined来判断一下标量就可以明白他是否是undef的了,若为undef则返回为0,若为非undef则返回1。
简单的例子
my $word;#没有赋值
if((defined $word)==0)
{print "0\n$word"}
else
{print "1\n$word";}
程序运行结果为:0
结果为第一行为0第二行为空,说明defined返回为0,那说明$word没有赋值也就是undef的。
将my $word;改为my $word="";再运行一次查看一下,
结果显示为:1
结果为第一行为1,第二行为空,说明defined返回为非0,说明$word已经被赋值了,且赋值为空,所以第二行显