Perl 数据类型

Perl 是一种弱类型语言,所以变量不需要指定类型,Perl 解释器会根据上下文自动选择匹配类型。

Perl 有三个基本的数据类型:标量、数组、哈希。以下是这三种数据类型的说明:

序号类型和描述
1标量 标量是 Perl 语言中最简单的一种数据类型。这种数据类型的变量可以是数字,字符串,浮点数,不作严格的区分。在使用时在变量的名字前面加上一个 $,表示是标量。例如:
  1. $myfirst=123;  #数字123 
  2.  
  3. $mysecond="123"; #字符串123 
2数组 数组变量以字符 @ 开头,索引从 0 开始,如:@arr=(1,2,3)
  1. @arr=(1,2,3)
3哈希 哈希是一个无序的 key/value 对集合。可以使用键作为下标获取值。哈希变量以字符 % 开头。
  1. %h=('a'=>1,'b'=>2);

数字字面量

一、整型

Perl 实际上把整数存在你的计算机中的浮点寄存器中,所以实际上被当作浮点数看待。

在多数计算机中,浮点寄存器可以存贮约 16 位数字,长于此的被丢弃。整数实为浮点数的特例。

整型变量及运算:

  1. $x = 12345;
  2. if (1217 + 116 == 1333) {
  3. # 执行代码语句块
  4. }

8 进制和 16 进制数:8 进制以 0 开始,16 进制以 0x 开始。例如:

  1. $var1 = 047; # 等于十进制的39
  2. $var2 = 0x1f; # 等于十进制的31

二、浮点数

浮点数数据如:11.4 、 -0.3 、.3 、 3. 、 54.1e+02 、 5.41e03。

浮点寄存器通常不能精确地存贮浮点数,从而产生误差,在运算和比较中要特别注意。指数的范围通常为 -309 到 +308。

实例

  1. #!/usr/bin/perl
  2. $value = 9.01e+21 + 0.01 - 9.01e+21;
  3. print ("第一个值为:", $value, "\n");
  4. $value = 9.01e+21 - 9.01e+21 + 0.01;
  5. print ("第二个值为:", $value, "\n");

执行以上程序,输出结果为:

  1. 第一个值为:0
  2. 第二个值为:0.01

三、字符串

Perl 中的字符串使用一个标量来表示,定义方式和 c 很像,但是在 Perl 里面字符串不是用 \0 来表示结束的。

Perl 双引号和单引号的区别: 双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出。

但是用单引号定义可以使用多行文本,如下所示:

  1. #!/usr/bin/perl
  2. $var='这是一个使用
  3. 多行字符串文本
  4. 的例子';
  5. print($var);

执行以上程序,输出结果为:

  1. 这是一个使用
  2.  
  3. 多行字符串文本
  4.  
  5. 的例子

Perl 语言中常用的一些转义字符如下表所示:

转义字符含义
\反斜线
\'单引号
\"双引号
\a系统响铃
\b退格
\f换页符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\0nn创建八进制格式的数字
\xnn创建十六进制格式的数字
\cX控制字符,x可以是任何字符
\u强制下一个字符为大写
\l强制下一个字符为小写
\U强制将所有字符转换为大写
\L强制将所有的字符转换为小写
\Q将到\E为止的非单词(non-word)字符加上反斜线
\E结束\L、\U、\Q

实例

接下来让我们来具体看看单引号和双引号及转义字符的使用:

  1. #!/usr/bin/perl
  2. # 换行 \n 位于双引号内,有效
  3. $str = "Perl 教程 \nhttps://www.jishuchi.com/books/perl-lang";
  4. print "$str\n";
  5. # 换行 \n 位于单引号内,无效
  6. $str = 'Perl 教程 \nhttps://www.jishuchi.com/books/perl-lang';
  7. print "$str\n";
  8. # 只有 h 会转换为大写
  9. $str = "\uhelloworld";
  10. print "$str\n";
  11. # 所有的字母都会转换为大写
  12. $str = "\Uhelloworld";
  13. print "$str\n";
  14. # 指定部分会转换为大写
  15. $str = "Welcome to \Ujishuchi\E.com!";
  16. print "$str\n";
  17. # 将到\E为止的非单词(non-word)字符加上反斜线
  18. $str = "\QWelcome to jishuchi's family";
  19. print "$str\n";

以上实例执行输出结果为:

  1. Perl 教程
  2. https://www.jishuchi.com/books/perl-lang
  3. Perl 教程 \nhttps://www.jishuchi.com/books/perl-lang
  4. helloworld
  5. HELLOWORLD
  6. Welcome to JISHUCHI.com!
  7. Welcome\ to\ jishuchi\'s\ family