Chinaunix首页 | 论坛 | 博客
  • 博客访问: 129744
  • 博文数量: 83
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-13 10:26
个人简介

- 毅力与勇气是事业的双飞翼; - 在尝试中成长,在失败中奋起。 - 概览 -> 细读 -> 概览 - 书不在多,在于精。

文章分类

全部博文(83)

文章存档

2016年(2)

2015年(6)

2014年(75)

我的朋友

分类: LINUX

2014-11-20 11:03:57

转自: http://blog.sina.com.cn/s/blog_75b0e2ad0101aidp.html

perl中对defined()、undef、exists浅析

 (2012-09-16 15:44:46)
标签: 

杂谈

分类: 技术论坛

在使用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已经被赋值了,且赋值为空,所以第二行显

阅读(782) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~