3.2.Perl数据类型-标量

这篇博客详细介绍了Perl中的标量数据类型,包括浮点型和整型数字直接量,字符串及其操作,以及标量变量的定义和操作。讨论了数字和字符串的比较,布尔值的概念,流程控制结构如if和while,并提到了标准输入输出、chomp()函数以及undef和defined()函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.2.Perl数据类型-标量

B站视频教程: 菜鸟学生信

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

image-20221123152318205

1.标量(单数)

1.1.标量直接量

1.1.1.数字
1.1.1.1.浮点型直接量

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

浮点寄存器通常不能精确地存贮浮点数,从而产生误差,在运算和比较中要特别注意。

#!/usr/bin/perl 

$value = 9.01e+21 + 0.01 - 9.01e+21;
print ("第一个值为:", $value, "\n");   # 结果:0
$value = 9.01e+21 - 9.01e+21 + 0.01;
print ("第二个值为:", $value, "\n");    # 结果 0.01
1.1.1.2.整型直接量

整数实为浮点数的特例,存储是整数当做浮点数处理

重点掌握10进制整形。

2进制、8进制、16进制数:2进制以0b开头,8进制以0开始,16进制以0x开始

16进制的个位(0-f)

1.1.3.数字操作符

数字支持的运算符:加:+,减: -,乘: ,除法: /,取模: %,幂:* 等

比较操作符: > >= < <= == !=

1.1.2.字符串
1.1.2.1.字符集

支持Unicode字符集,使用utf8编码;

# 如果代码中有中文,最好加上;有特殊字符一定要加上; 
use utf8;
1.1.2.2.字符串直接量
单引号:'abc生物信息123&&%   \n  ${abcd}123'
双引号:"abc生物信息123&&%   \n  ${abcd}123"

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

单引号:功能少 原样输出

双引号:功能多 支持变量内插 支持转义

1.1.2.3.双引号转义

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.1.2.3. 字符串操作符

链接符: . 格式: 字符串a . 字符串b

重复操作符: x 格式: 字符串a x 整数

比较操作符: gt ge eq lt le ne

1.1.2.4. 双引号变量内插
print "${x1}sssssssss";

1.2.标量变量

1.2.1.定义

符号:$

变量命名

1.2.2 操作符

赋值操作:= 格式:变量名 = 直接量

双目赋值操作:+= -= *= /= .= 等等

1.3.相关重要知识

1.3.1.操作符的优先级和结合性

操作符列表参考书本。

2 + 4 * 3
4 ** 3 ** 2
18 / 3 * 3

首先考虑不同操作符的优先级,相同的操作符再考虑结合性。

为了提高代码的可读性,强烈使用小括号明确优先级。

(4 ** 3) ** 2

注意:优先级和结合性不用背,遇到时查表或者直接使用小括号。

1.3.2.字符串的比较与数字的比较

返回值 true / false

1.3.3.布尔值

Perl没有专门的Boolean数据类型。

Perl靠一些简单的规则判断:

  • 数字:0为假,其他为真

  • 字符串:""或’'或"0"为假,其他为真

  • 既不是数字也不是字符串,转换成数字或字符串后再判断

取反操作符:!

通常在Perl里, 返回真假时,习惯使用数字1表示真,使用undef表示假(不强制)

1.3.4.流程控制
1.3.4.1.if分支结构

if流程控制

if(布尔值){}

1.3.4.2.while循环结构

while(布尔值){}

1.3.5.标准输入输出

标准输出:屏幕输出, print函数

标准输入:键盘输入,输入行操作符: ,键盘输入,遇到回车后停止,所以输入的字符串是以"\n"结尾的。

1.3.6.chomp()函数

输入的最后一个回车通常是没用的,可以使用chomp去掉字符串的最后一个回车。

chomp()本质是一个函数,返回值是移除的字符个数,作用:去掉字符串的最后一个换行符。

$input = <STDIN>;
chomp($input);

chomp($input = <STDIN>)

chomp后的小括号可以不写;

Perl的一项惯例:去掉括号不会改变表达式的意义,括号就可以省掉。

1.3.7.undef值

定义的变量没有赋值时,变量的值就是undef,表示没有任何东西;

如果是数字类型,undef就类似0;

如果是字符串类型,undef就类似"";

但是undef既不是数字也不是字符串,完全是另一种类型的标量值。

Perl的许多操作符,在参数越界时,返回undef,但是不影响程序的执行,但是可能得不到正确的结果;可以使用use warnings;

1.3.8.defined()函数

defined():用于判断变量的值是否定义;如果是undef,函数返回假,否则返回真;

读到文件结尾(EOF)时返回undef

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值