Perl 数据类型
Perl 是一种解释性的脚本语言,是一种弱类型语言,所以变量不需要指定类型。
Perl 解释器会根据上下文自动选择匹配类型。
Perl 有三个基本的数据类型:标量、数组、哈希表。
下面是对这三种数据类型的说明
类型 | 描述 |
---|---|
标量标量 | 是Perl语言中最简单的一种数据类型。 这种数据类型的变量可以是数字,字符串,浮点数,不作严格的区分。 在使用时在变量的名字前面加上一个 $ ,表示是标量 例如: $myfirst=123; #数字123 $mysecond="123"; #字符串123 |
数组 | 数组变量以字符 @ 开头,索引从 0 开始 如:@arr=(1,2,3)@arr=(1,2,3) |
哈希表 | 哈希表是一个无序的 key/value 对集合。可以使用键作为下标获取值。 哈希变量以字符 % 开头。 %h=('a'=>1,'b'=>2); |
数字字面量
1. 整型
Perl 把整形当做浮点数来看待,因为它把整数存在浮点寄存器中
在现代的计算机中,浮点寄存器可以存贮约 16 位数字,长于此的被丢弃。
整形是浮点数的特例
整型变量及运算:
$num = 520; if ( 1314 + 520 == 1834 ) { # 执行代码语句块 }
8 进制和 16 进制数:8进制以 0 开始,16进制以 &&0x**开始
$num1 = 047; # 等于十进制的 39 $num2 = 0x1f; # 等于十进制的 31
2. 浮点数
浮点数 像:11.4 、 -0.3 、.3 、 3. 、 54.1e+02 、 5.41e03。
在计算机中,浮点数存储在 浮点寄存器中。
浮点寄存器通常不能精确地存贮浮点数,从而产生误差,在运算和比较中要特别注意。
指数的范围通常为 -309 到 +308
#!/usr/bin/perl =pod file: mail.pl author: 简单教程(www.twle.cn) Copyright © 2015-2065 www.twle.cn. All rights reserved. =cut $num = 9.01e+21 + 0.01 - 9.01e+21; print ("第一个值为:", $num, "\n"); $num = 9.01e+21 - 9.01e+21 + 0.01; print ("第二个值为:", $num, "\n");
运行以上范例,输出结果为:
$ perl main.pl 第一个值为:0 第二个值为:0.01
3. 字符串
Perl 中的字符串使用一个标量来表示
Perl 双引号和单引号的区别:
双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出
用单引号可以定义多行文本,如下所示:
#!/usr/bin/perl =pod file: mail.pl author: 简单教程(www.twle.cn) Copyright © 2015-2065 www.twle.cn. All rights reserved. =cut $str1='这是一个使用 多行字符串文本 的例子'; print($str1);
运行以上范例,输出结果为:
$ perl main.pl 这是一个使用 多行字符串文本 的例子
下表是 Perl 语言中常用的转义字符
转义字符 | 含义 |
---|---|
\\ | 反斜线 |
\' | 单引号 |
\" | 双引号 |
\a | 系统响铃 |
\b | 退格 |
\f | 换页符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\0nn | 创建八进制格式的数字 |
\xnn | 创建十六进制格式的数字 |
\cX | 控制字符,x可以是任何字符 |
\u | 强制下一个字符为大写 |
\l | 强制下一个字符为小写 |
\U | 强制将所有字符转换为大写 |
\L | 强制将所有的字符转换为小写 |
\Q | 将到\E为止的非单词(non-word)字符加上反斜线 |
\E | 结束\L、\U、\Q |
范例 : 单引号和双引号及转义字符的使用
#!/usr/bin/perl =pod file: mail.pl author: 简单教程(www.twle.cn) Copyright © 2015-2065 www.twle.cn. All rights reserved. =cut # 换行 \n 位于双引号内,有效 $str = "welcome to \nwww.twle.cn"; print "$str\n"; # 换行 \n 位于单引号内,无效 $str = 'welcome to \nwww.twle.cn'; print "$str\n"; # 只有 W 会转换为大写 $str = "\uwelcome to www.twle.cn"; print "$str\n"; # 所有的字母都会转换为大写 $str = "\Uwelcome to www.twle.cn"; print "$str\n"; # 指定部分会转换为大写 $str = "Welcome to \Uwww.twle\E.cn!"; print "$str\n"; # 将到\E为止的非单词(non-word)字符加上反斜线 $str = "\QWelcome to www.twle.cn's family"; print "$str\n";
以上范例执行输出结果为:
$ perl main.pl welcome to www.twle.cn welcome to \nwww.twle.cn Welcome to www.twle.cn WELCOME TO WWW.TWLE.CN Welcome to WWW.TWLE.cn! Welcome\ to\ www\.twle\.cn\'s\ family