2.1 数字
尽管一个scalar 通常既被使用为一个数字或者一个字符串,但是把它分开看作数字或者字符串是有用的目前。我们将首先看一下数字然后看字符串。
2.1.1 所有的数字具有同样的内部格式
你在下面的几个章节中将会了解,分出整数和浮点数。但是在内部,perl 计算的是双精度浮点值。这就意味着perl内部没有整数型。你可能不会注意这种perl内部的转换(或者关注了过多) ,你应该停止寻找与浮点数相对照的整数独有的操作。因为它们根本就不存在。
2.1.2 浮点数的单字
一个浮点数的单字就是一个值在perl源代码中的表现形式。一个浮点数的单字不是一个计算式的结果,或者一个I/O操作;而是直接写入到源代码中的数据。
PERL的浮点数单字看上去应该很熟悉。允许带有小数点也允许不带有小数点(包括一个可选的加号或者减号),也可以接一个10的平方的指示器用E这个符号。
1.25
255.000
255.0
7.25e45 #7.25 乘以 10的45次方。
-6.5e24 # 负的6.5乘以10的24次方。
-12e-24 #负的12乘以10的-24次方。
-1.2E-23 #上边数字的又一种表述方式,E可以是大写的。
2.1.3 整数单字语法
整数单字是非常简单的:
0
2001
-40
255
61298040283768
最后一个数字有一些难读,PERL 允许为了清楚加上下划线,所以你可以这样写
61_298_040_283_768
这是同一个数值,只是人看上去有一些不同。你也许觉得逗号应该用作这个目的,
但是逗号在PERL中被用作一种更重要的用途。(在下一节你将会知道)
2.1.4 非十进制整数值语法
就像其他的程序语言一样,PERL允许使用其它的进制的数字除了10进制以外。
8进制的语法开始是一个0,16进制语法开始是一个0x,2进制语法开始从0b,
16进制的数字A到F,(a到f)表示10进制的10到15
0377 #八进制, 与10进制的255一样大
0xff #十六进制, 也是10进制的255
0b11111111 #同样也是255
尽管这些值看上去不一样,但是对perl它们都是一样的。一点区别都没有如果你写
0xFF或者255.000,所以选择对你或者你的维护程序员最熟悉的表现形式。(我们指的是
可怜的小伙子会尽力计算你写的代码的含义,通常这个可怜的人就是你自己,你不能回忆起
3个月前为什么这样写,写了什么)
如果一个非十进制的数字比四个字母长,那样读起来比较困难,PERL允许为了看上去清楚加上下划线:
0x1377_0B77
0x50_65_72_7C
2.1.5 数字运算符
perl 提供了一组典型的通用运算符,加,减,乘,除,如:
2 + 3 #2加上3 ,5
5.1 - 2.4 #5.1减去2.4, 2.7
3 * 12 # 3乘以12 ,36
14 / 2 # 14除以2, 7
10.2 / 0.3 #10.2除以0.3, 34
10 / 3 #总是浮点除法运算,3.333333....
perl 也支持一个取模运算符(%),10%3的值是余数1,所有的数值都被缩减为它的整数值,如
10.5%3.2是作为10%3来计算的。另外perl提供了一个类FORTRAN语言的运算符求幂运算符。
这是许多用PASCAL,C的人所渴望的,这个操作符的表现形式是两个星号,如2**3,就是求2的3次方,是
8。当我们需要的时候,将介绍其它的运算符。