Perl中的真与假深入研究
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中的真与假深入研究
Perl认为真值是自明的(self-evident), 表示任何事物的真值都可以计算.Perl以实用的方式来定义真值,即一个实体的真值取决于这个实体的类型.Perl总是乐观的认为:这个世界上真的东西远比假的东西多的多. Perl区别与任何其他计算机语言,Perl是语言学家创造的,而语言的意思离不开上下文语境,所以Perl中的真值都可以在标量(标量$与数组@类似于英文中的单数与复数, book 与 books的区别, 真值在现实世界中,应该就是单数,所以是标量)计算,除此之外,不会做任何类型的强制
-
Python中True(真)和False(假)判断详解
目录 前言 1.True和False的逻辑取反 2.if条件语句中的True和False 3.pandas.DataFrame.loc 中的否定 总结 前言 Python中的 True和 False总是让人困惑,一不小心就会用错,本文总结了三个易错点,分别是逻辑取反.if条件式和pandas.DataFrame.loc切片中的条件式. 1.True和False的逻辑取反 在对True和False进行逻辑取反时,不使用~,而要使用not. 因为在Python中,not才是逻辑取反,而~是按位取反.
-
Perl中常见符号与操作
注释: 1.单行: #print 2.多行:=pod -. =cut 查询perl相关: Perldoc perlvar($a,$$,$"...) Perldoc perfunc(sort-) Perldoc perl 查看perldoc文章列表 Perldoc –q 正则表达式 Perldoc –f 函数名 Perldoc module_name 查看模块 Perldoc –v 变量名 查看变量 Perldoc perlop 查看操作符 查看模块相关函数: 1.Perl –d –e 0 2.U
-
Perl中的控制结构学习笔记
一.条件判断 复制代码 代码如下: if ( ) { } elsif ( ) { } ... else{ } 建立i f语句的另一种方法是使用多个表达式,然后根据哪个表达式是真,来运行代码:可以像下面这样来读取上面这个语句块:如果标号为e x p r e s s i o n 1的表达式是真,那么语句块B L O C K 1就运行.否则,控制权转给e l s i f,对e x p r e s s i o n 2进行测试,如果该表达式是真, 则运行B
-
Perl中的符号 ->;、=>; 和 :: 分别表示什么意思?
What do the ->, => and :: symbols mean? The -> is the "infix dereference operator". In other words it is the means by which one calls a sub with a pass by reference (among other things you can do with ->). As stated above most things
-
Perl中的特殊符号介绍
$_ 俗称perl的老地方,当你的程序中未告知使用哪个参数或者变量时,perl就会自动使用$_中的值,比如 for(1..10){ print ; } 这里print没有指定参数,所以它就会使用$_,那$_里面是什么呢?每次循环$_的值都会变化,所以$_实际上就是1 .. 10这10个值,所以上面的代码打印的结果就是12345678910 $! 当且仅当某个函数调用失败时才会设置该变量,所以经常这样使用这个变量 open FILE,"<d:/code/zdd.txt" or
-
Perl中的单行注释和多行注释语法
同其他大多数编程语言一样,Perl中的单行注释也是#开头,例如: 复制代码 代码如下: #print "Hello,World!"; 但多行注释,不同的语言有不同的注释方式,比如说: Java,C/C++: 复制代码 代码如下: /* *注释若干行 *注释若干行 *注释若干行 */ Python: 复制代码 代码如下: """ 用三个双引号,多行注释 用三个双引号,多行注释 用三个双引号,多行注释 """ '''
-
讲Perl中的本地时间与UNIX时间戳间相互转换的方法
当你的Perl脚本需要解决时间信息,这里有两种方法来表示和处理日期和时间.一种方法是易读的时间表示(例,"Sat Mar 14 10:14:05 EDT 2015"),另外一种是使用UNIX时间戳(也叫"新纪元时间"),这是从1970年1月1日到今所经过的时间秒数.每一种方法都有它自己的优劣势,取决于你的需要,也许也就需要转换一种格式到另一种. Perl中转换本地时间到UNIX时间戳 为了从日期字符串中获得UNIX时间,可以使用Date::Parse模块中str2t
-
Perl中的列表和数组学习笔记
一.列表 列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:(1, 5.3 , "hello" , 2),空列表:(). 注:只含有一个数值的列表(如:(43.2) )与该数值本身(即:43.2 )是不同的,但它们可以互相转化或赋值.列表例: 复制代码 代码如下: (17, $var, "a string") (17, 26 << 2) (17, $var1 + $var2) ($value, "The answer
-
Perl中的文件读写学习笔记
一.打开.关闭文件 语法为open (filevar, filename),其中filevar为文件句柄,或者说是程序中用来代表某文件的代号,filename为文件名,其路径可为相对路径,亦可为绝对路径. 复制代码 代码如下: open(FILE1,"file1"); open(FILE1, "/u/jqpublic/file1"); 打开文件时必须决定访问模式,在PERL中有三种访问模式:读.写和添加.后两种模式的区别在于写模式将原文件覆盖,原有内容丢失,形式为
随机推荐
- asp.net小谈网站性能优化
- phpredis提高消息队列的实时性方法(推荐)
- javascript的switch用法注意事项分析
- SQL Injection with MySQL 注入分析
- WMI StdRegProv 通过wmi操作注册表的vbscript实现代码 (本地或远程)
- servlet之ServletContext简介_动力节点Java学院整理
- 在ASP.NET 2.0中操作数据之七十四:用Managed Code创建存储过程和用户自定义函数(下部分)
- JAVASCRIPT keycode总结
- localResizeIMG先压缩后使用ajax无刷新上传(移动端)
- JavaScript原生编写《飞机大战坦克》游戏完整实例
- PHP cURL初始化和执行方法入门级代码
- Python实现从百度API获取天气的方法
- C语言中枚举与指针的实例详解
- php实现监控varnish缓存服务器的状态
- winxp下Apache + PHP + MySql安装设置方法
- jQuery带时间的日期控件代码分享
- JavaScript闭包详解
- java开发中嵌套类的详解及实例
- java连接Oracle数据库的方法解析
- ByteArrayInputStream简介和使用_动力节点Java学院整理