加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

《perl语言入门》之 第二章 标量数据

发布时间:2020-12-15 21:03:47 所属栏目:大数据 来源:网络整理
导读:前言: ??????? 定义: 单复数概念----标量即单个事物,perl 用标量(perl 中最简单的一种数据类型)来称呼单件事物。 对大部分的标量来说,要么是数字,要么是由字符组成的串(perl 中不存在单个字符的概念,一个字符串整体就是单个事物)。 ??????? 关联:

前言:

??????? 定义:单复数概念----标量即单个事物,perl 用标量(perl 中最简单的一种数据类型)来称呼单件事物。 对大部分的标量来说,要么是数字,要么是由字符组成的串(perl 中不存在单个字符的概念,一个字符串整体就是单个事物)。

??????? 关联:而标量之间又可以使用操作符(比如加法或字符串连接)来关联,产生的结果也是一个标量。
??????? 来源和去处:标量可以存储在标量变量里,也可以从文件和设备读取(或写入这些位置)。

1.数字

??????? 所有数字的内部格式都相同:不管是整数还是浮点数,在perl内部,均按“双精度浮点数”(即当初用来编译perl的C编译其的double类型,大部分现代系统均使用IEEE-745的格式)的要求来保存并进行运算。
浮点数直接量:????????
??????? 直接量的概念:直接量(literal:即字面值常量)是某个数值在perl 代码中的书写方式。直接量并非运算的结果,也不是I/O操作的结果,而是直接写在程序源代码里的数据。
??????? 直接量的写法:一般写法:12.45;科学计数法:-6.5e24:负6.5乘以10的24次方(e也可以大写成E)。
??????? 整数直接量:2001、-59、23455432等。
??????? 注:为使看起来清晰,perl允许2345432也可以这样表示:2_345_54_32。
??????? 非十进制的整数直接量:
??????????? ? ? 八进制:以0(零)开头,如037-----对应十进制:225
??????????????? 十六进制:以0x(零)开头,如0xFF----对应十进制:225
?? ??? ??? ???? 二进制:以0b(零)开头,0b22222111----对应十进制:225
??????????? ? ? 即以上三个数完全等价,且0b22222111也可以写成:0b1111_1111(清晰很多)。

???????? 数字操作符:加法(+)、减法(-)、乘法(*)、除法(/)、取模(%)以及乘幂(**)等。

2.字符串

??????? 定义:perl 中字符串可以由任意字符任意组合而成,且空字符(NUL)在perl 里并没有特殊意义,因为perl 会另行记住字符串的长度,而不是用空字符来表示字符串的结尾。
??????? 特性:最短的字符串为不含任何字符的空字符串;最长的字符串长度则无限制-------符合perl 尽可能遵循的“无内置限制”原则
??????? 形式:
???????????????? 单引号:
单引号内的字符串,除了单引号本身和反斜线字符外,单引号内所有字符均代表他们自己。
???????????????? 双引号:与单引号类似,但双引号内的字符串直接量的反斜线字符拥有更大更完整的能力,可以用来表示控制字符或用八进制(或十六进制)写法来表示任何字符。
???????????????? 注:反斜线转义通过反斜线加上各种不同的字符,以代表不同格式的数据。
???????? -----------------------------Linux 中单引号和双引号--------------------------------------------------------------
????????????????? Linux中单引号和双引号都能关闭shell对特殊字符的处理,不同的是:
????????????????? 单引号更加严格,它关闭所有有特殊作用的字符。
????????????????? 而双引号会放开3个选项,具体为:(1)美元符号:$;(2)反引号:~;(3)反斜线:?? 。即这三种字符不被忽略(有特殊意义)。
???????? ---------------------------------------结束------------------------------------------------------------------------------
????????? 字符串操作符:.”:连接字符串;“* a”:重复连接,重复次数为a;
????????? 数字与字符串之间的自动转换:根据具体情况,perl 自动转换。字符串转换为数字时:忽略字符串中前置空白符和非数字部分(若没有一个数字,则转换为0);数字
转换为字符串时,数字转换为(输出效果)相同的字符串------? 一切无需程序员操心,perl 自动完成数据转换的工作

3.perl 内建警告信息

?????????? 当调试程序是,想显示程序警告信息,让perl 发出警告,使用 -w 选项,开启警告功能。如,perl? -w? my_program
?????????? 若想每次运行均启用警告功能,可以使用#!行来指明: #! /usr/bin/perl? -w
?????????? 注:在perl 5.6或者更高的版本中,还可通过启用 warnings这个编译命令来打开警告功能:
?????????????????????????? #! /usr/bin/perl
      ?? user? warnings;
??????????? 而若要查看更加详细的问题描述:perl -M? diagnostics 或use diagnostics;?? -------该编译命令会到时程序启动变慢。

4.变量标量

?????????? 定义:变量即某个容器的名称,可以存储一个或多个值。
?????????? perl 标识符一个字母或下划线为首,后面可以跟上多个字符、数字或下划线。且标量变量明前总有 $ 符号
?????????? 慎选变量名称:见名知意,保持一致。
?????????? 标量的赋值(=)和双目赋值操作符(+=、-=...)

5.用print 输出结果

??????????? 默认向屏幕输出,如输出多个值时用逗号隔开
??????????? 字符串中的标量变量内插:双引号内或与单引号连接两种方式。
??????????????????? 一些经验:通过转义字符可输出特殊字符以及变量本身;可以将变量用花括号围起来,避免歧义。
???????????? 操作符的优先级和结核性:
???????????? 比较操作符:

比较 数值 字符串
相等 == eq
不等 != ne
小于 < lt
大于 > gt
小于或等于 <= le
大于或等于 >= ge

6.if 控制结构

?????????????? 布尔值:perl 中没有专用的“布尔”(Boolean)数据类型,它靠以下规则来判断:
???????????????????????? (1)如果值为数字,0为假;其他为真。
???????????????????????? (2)如果值为字符串,空字符串(’‘)为假;其他为真。
???????????????????????? (3)如果既不是数字也不是字符串,就先转换成数字或字符串再进行判断。
??????????????????????????? 注:由于字符串0 和数字0是同一标量值,所以perl一视同仁,均看成假。
??????????????? 获取用户输入:最简单方式:<STDIN> ,如$line=<STDIN>为读取标准输入到标量值line中直到遇到换行符(即按下回车键)。
???????????????????????? 注:<STDIN> 返回的字符串,一般在最后都会跟有一个换行符(除非异常终止)。

7.chomp 操作符

???????? 删除字符串结尾处的换行符。本质上是函数,返回值为:实际移除的字符数(一般为1)。

8. undef 变量和defined 函数:

??????? undef:在首次被赋值前,变量的初始值就是特殊的undef(未定义--”空无一物“):一种数据类型:既不是数字也不是字符串。
??????? 但是,undef在需要的时候可随机转换:当作为数字时,转换为零;当作为字符串时,转换为空字符串。
??????? 例如,“行输入”操作符<STDIN>有时会返回undef:当读到文件结尾时,会返回undef 来表示这个状况。
??????? defined函数:判断某个字符串或数字是否为undef。若是undef则返回假;否则返回真。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读