目录
1.2.1、单引号内的字符串直接量(single-quoted string literal)
1.2.2、双引号内的字符串直接量(double-quoted string literal)
1、标量数据
标量(scalar)是perl里面最简单的一种数据类型,对于大部分标量来说,要么是数字,要么是由字符组成的序列(字符串)。在perl中这两者大多情况下都是可以在内部转换的。-----字符串就是独立的一个标量值。
标量可以存储在标量变量里,也可以从文件和设备读取或者写入这些位置。
1.1、数字类型的标量
perl中的总是按"双精度浮点数(double-precision floating-point)"的要求来保存数字并进行运算。即所有数字的内部格式都相同。---双精度浮点数是当初用来编译perl的C编译器的double类型,可以表示15位的精度,有效值的范围从1e-100到1e100。
1.1.1、浮点数直接量
直接量(literal)是指某个数字在perl源代码中的写法,literal并非运算结果,也不是I/O操作的结果,只是直接键入程序源代码中的数据。
1.1.2、整数直接量
perl允许在整数直接量中插入下划线,用于分开若干位数。eg:61_918_632_654----注意是下划线不是逗号,因为print输出一系列用逗号隔开的值。
非十进制的整数直接量:八进制(octal)直接量以0开头,十六进制(hexadecimal)直接量以0x开头、二进制(binary)直接量以0b开头;若非十进制直接量的长度超过4个字符时,可以在其使用下划线。eg:0x1377——0b77;注:前置零的表示法只对直接量有效,不能应用在字符串的自动转换。
---perl中乘幂(exponentiation)操作符以双星号(**)表示;
1.2字符串
字符串遵循“无内置限制(nobuilt-inlimits)”的原则,即最长的字符串的长度没有限制,可以填满所以内存。
字符串由可输出的字母、数字及标点符号组成,其范围介于ASCII编码的32到126之间。
perl完全支持Unicode,若想在源代码中使用Unicode书写直接量的话,得手工加上utf8编译指令(use utf8)。统一码,也叫万国码、单一码(Unicode)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
1.2.1、单引号内的字符串直接量(single-quoted string literal)
除单引号和反斜线字符外,单引号内所有字符都代表它们自己(包括换行符,如果该字符串表示多行的数据的话)。若想表示单引号本身和反斜线字符本身的话,需要在其前加一个反斜线字符表示转义。注:单引号内的\n并不是换行符,而是表示字面上的两个字符。
1.2.2、双引号内的字符串直接量(double-quoted string literal)
双引号内的反斜线可以转义许多控制字符(反斜线转义),或是用八进制或十六进制写法来表示任何字符。eg:\x{2744}:十六进制表示的Unicode代码点(这里的U+2744表示雪花形状的图形字符);
双引号内字符串的变量内插(variable interpolated)指在使用字符串时,将字符串内的变量名称替换成该变量当前的值。注:变量内插又称为双引号内插,因为它通常是在双引号(而非单引号)里其作用。
字符串操作符:.操作符:连接操作符(concatenation operator);字符串重复操作符(string repetition operator):小写的字母x,不满足交换(commutative)律;注:重复次数(右操作数)在使用前会先取整(4.8变成4),重复次数小于1时,会生成长度零的空字符串。
操作符.将操作数视为字符串;操作符+将操作数视为数字;在最极端的情况下,完全不含数字的字符串会被转换成零eg:“12fred34”*“3”得到36,其中的fred变成0;
借助代码点创建字符:chr()函数表示将字符的代码点(code point)转换成对应字符;ord()函数表示把字符转换成代码点;
2、if控制结构
条件语句中的代码块周围一定要加上表示界限的花括号;任何标量值都可以成为if控制结构里的判断条件。
perl没有专用的“布尔(Boolean)”数据类型,是靠一些简单的规则来判断:
1)如果是数字,0为假;所有其他数字都为真;
2)如果是字符串,空字符串(‘’)为假;所有其他字符串都为真;
3)如果既不是数字也不是字符串,那就先转换成数字或字符串再行判断;注:数字1和undef都是非常自然的表示真假的标量值。
获取用户输入:“行输入”操作符<STDIN>;作用在STDIN文件句柄上的“行输入”操作符;注:由<STDIN>返回的字符串一般在末尾都会带有换行符;chomp()操作符去掉末尾换行符,内部的变量内容必须为字符串,返回值是实际移除的字符数,若结尾处没有换行符,它什么都不做,直接返回零;eg:chomp($text=<STDIN>);