一、什么是标量
- 标量是perl里面最简单的一种数据类型
- 标量分为数值类型和字符串类型
二、变量命名规则
- 标量变量以$开头
-
- 标识符由字母、数字或下划线组成
-
- $后紧跟字母或下划线,不能跟数字
- 区分大小写
- 长度不限
- 不能和内置变量名称重复
三、数值类型标量
数值类型标量又分为整数和浮点数两种
1、整数表示形式
- 正整数:30
- 负整数:-28
- 可用下划线分隔数字:20_000_320
- 二进制:以0b开头,0b1111_1111 #相当于十进制的255
- 八进制:以0开头,0377 #相当于十进制的255
- 十六进制:以0x开头,0xFF #相当于十进制的255,十六进制中的字母不区分大小写
- 指数表示:20e2 #20乘以10的2次方,e不区分大小写
2、浮点数表示形式
- 12.5、25.000、25.0
- 省略小数点前后的0:.2、2. #相当于0.2、2.0
- 指数表示:-0.3E-20 #0.3乘以E的负20次方,E不区分大小写
3、数值范围
- 整数表示范围:15位有效数字,15位后截断
- 浮点数表示范围:指数范围-309—308
4、数字操作符
- perl提供加(+)、减(-)、乘(*)、除(/)等操作符
5、浮点数运算特别注意
- 大数和小数相加减运算结果可能不变
例:
&va1 = 9.01e21+0.01- 9.01e21
&va2 = 9.01e21- 9.01e21+0.01
运算结果:
&va1 = 0 &va2 = 0.01
四、字符类型标量
- 字符串分为单引号内的字符串和双引号内的字符串两种
- 最短的字符串:不含任何字符的空字符串
- 最长的字符串:没有限制,甚至可以填满整个内存
1、双引号字符串
- "hello world" #打印输出:hello world
- 空字符:""
- 转义字符:"hello/n" #打印输出:hello,后面紧跟换行符
- 表示双引号:"/"hello/"" #打印输出:"hello",在双引号字符串内表示双引号用/"
-
- 错误:"hello/" #打印输出:出错,缺少结尾双引号。/"表示单引号字符串内的双引号,并非是字符串结尾的双引号
2、单引号字符串
- 'hello world' #打印输出:hello world
- 空字符:''
- 转义字符无效:'hello/n' #打印输出:hello/n,转义字符在单引号内不起作用
- 结果同上:'hello//n' #打印输出:hello/n
- 表示单引号:'/'hello/'' #打印输出:'hello',单引号字符串中表示单引号本身,需在单引号前加反斜杠/'
- 错误:'hello/' #打印输出:出错,缺少结尾单引号。/'表示单引号字符串内的单引号,并非是字符串结尾的单引号
3、转义字符
略……
4、字符串操作符
- 连接运算符—小数点'.'
"hello" . "world" #相当于"helloworld"
"hello" . ' ' . "world" #相当于'hell oworld'
'hello world' . "/n" #相当于"hell oworld/n"
- 重复运算符—小写字母x
"hello" x 3 #相当于"hellohellohello"
"hello" x (3-1) #相当于"hello"x2
"hello" x 3.8 #相当于"hello"x3,小数先取整,再运算,向下取整
"hello" x 0.3 #相当于"hello"x0,输出空字符
3 x 4 #3先转化成字符"3"再进行运算,相当于"3"x4,输出3333
五、数字与字符串间的转换
- 自动转换为哪种类型取决于操作符
"3" * "4"或'3' * '4' #结果都是12
"3hello" * 4, "hello3" * 4, "hello" * 4 #结果分别为12、0、0
"a".3 * 4 #相当于"a".12,运算结果为"a12"
六、pint输出结果
例:
print "hello world". "/n";
print 3 * 4. "/n";
print 'hello', "world", 3*4. "/n";
输出结果:
hello world
12
helloworld12
七、变量内插
例:
$str = world;
print $str . "/n";
print "hello $str/n";
print 'hello $str' . "/n";
print 'hello ' . $str."/n";
print "hello $strs/n";
print "hello ${str}s/n";
print "hello /${str}s/n";
输出结果:
world
hello world
hello $str
hello world
hello
hello worlds
hello ${str}s