Perl中的真与假深入研究

所属分类: 脚本专栏 / perl 阅读数: 883
收藏 0 赞 0 分享

Perl认为真值是自明的(self-evident), 表示任何事物的真值都可以计算。Perl以实用的方式来定义真值,即一个实体的真值取决于这个实体的类型。Perl总是乐观的认为:这个世界上真的东西远比假的东西多的多。

Perl区别与任何其他计算机语言,Perl是语言学家创造的,而语言的意思离不开上下文语境,所以Perl中的真值都可以在标量(标量$与数组@类似于英文中的单数与复数, book 与 books的区别, 真值在现实世界中,应该就是单数,所以是标量)计算,除此之外,不会做任何类型的强制转换(比如在Python中int('42')来将含数字的字符型转换int类型,在Java中(int)'d'将字符型转为整型)。

对于标量中各种类型的值,规则如下:

字符型: 除了""和"0",所有字符都是真(true)
数字型: 除了0外,所有数字都是true
引用型: 所有引用都为true(所有引用都会指向有地址的对象,这绝对不会为0,因为它肯定已定义)
未定义: 所有未定义值都是false

下面例子可以很好理解Perl中真、假的概念:

复制代码 代码如下:

0           # 将转换为字符串"0",所以为false 
1           # 将转换为字符串"1",所以为true 
100 - 100   # 100-100等于0,这将转换为字符串"0",所以为false 
0.00        # 等于0,将转换为字符串"0",所以为false 
"0"         # 字符串"0",所以为false 
""          # 这是空串,所以为false 
"0.00"      # 即不是"",也不是"0",所以为true 
"0.00" + 0  # 由+强制转换,计算结果为0,所以为false 
\$a         # 标量$a的引用,所以为true,即使$a为false也是如此。 
undef()     # 是一个返回未定义值的函数,所以为false 

更多精彩内容其他人还在看

perl 指定长度并生成一个随机的DNA序列的脚本代码

perl 指定长度并生成一个随机的DNA序列的代码,有需要的朋友可以参考下
收藏 0 赞 0 分享

perl生成特定碱基比例的随机序列的代码

怎么用perl程序,随机生成一条序列,使ACGT四种碱基的含量分别为0.3,0.3,0.2,0.2!
收藏 0 赞 0 分享

学习perl的unless控制结构

在perl的if控制结构中,只有当条件表达式为真时才执行某块代码。如果想让程序块在条件为假时才执行,此时可以把if改成unless
收藏 0 赞 0 分享

有关perl正则表达式的一些杂项

有关perl正则表达式的一些杂项,有需要的朋友可以参考下
收藏 0 赞 0 分享

perl中heredoc使用说明

在成块打印文本的时候特别有用,需要的朋友可以参考下
收藏 0 赞 0 分享

Perl使用chdir的实例代码

Perl使用chdir的例子,供朋友们参考学习
收藏 0 赞 0 分享

perl特殊符号及默认的内部变量

perl特殊符号及默认的内部变量,有需要的朋友不妨参考下
收藏 0 赞 0 分享

perl中my与our的区别介绍

our 和 my 一样,都是对变量的声明,不过 our 声明的是包全局变量,而 my 声明的是词法变量
收藏 0 赞 0 分享

在vim中添加perl注释时无法对齐问题的解决方法

在使用vim编辑perl脚本时,每当输入#号时,#号都会跑到行首问题,需要的朋友可以参考下
收藏 0 赞 0 分享

perl 文件操作总结

perl 文件操作总结,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多