标量scalar $example 表示一个独立的数值(数字或字符串)
数组 array @example 表示一列数值,用编号作键字,如$example[0]
散列 hash %example 表示一组数值,用字符串作标记,如$example{“key”}
子过程 sub-router &example 表示一段可以调用的perl代码
类型团 *example 所有叫example的东东
数字标量
Perl总是按双精度浮点数来进行保存和运算。
直接量literal是写在perl代码中的数据,如:
浮点数直接量-6.5e24(负6.5乘以10的24次方)
整数直接量12_242_244_242,在这里起分隔符作用的是”_”,而不能用逗号,因它已有别的用途。
非十进制整数直接量0377(8进制377),0xFF(16进制FF),0b11111111(2进制1213),同样可以使用”_”来进行区隔。
数字操作符 + - * / %(取模,先分别取整再求余,如10.5%3.2等同于10%3)**(乘幂,2**3表示2的3次方)。
字符串
字符串就是一连串的字符,最短为空,最长没有限制。字符串通常由可输出的字母、数字及标点符号组成,其范围介于ASCII码的32到126之间(其它ASCII为一些控制键)。
字符串直接量在单引号和双引号中有不同的规则。
单引号字符串直接量:除了单引号和反斜线\外,所有字符都代表它本身。要表示单引号用“\’”,要表示反斜线用“\\”。
双引号字符串直接量:在这里反斜线拥有更强大的功能:
\n 换行(光标移动到下一行)
\r 回车(光标移动到行首)
\t 水平制表符
\f 换页符
\b 退格
\a 系统响铃
\e ESC(ASCII编码的转义字符)
\007 任何8进制的ASCII码值(这里的007表示系统响铃)
\x7f 任何16进制的ASCII码值(这里的7f表示删除键的控制代码)
\cC 控制符,也就是control键的代码(这里表示同时按下CTRL和C键的返回码)
\\ 反斜线
\” 双引号
\l 将下个字符转为小写
\L 将到\E为止的所有字符转为小写
\u 将下个字符转为大写
\U 将到\E为止的所有字符转为大写
\Q 将到\E为止的非单词字符加上反斜线
\E 结束\L,\U或\Q
字符串操作符
“hello”.” World”表示”hello world”
“fred”x3表示”fredfredfred”,5x(3+1)表示”5555”。右边的数字如果是浮点数则会先取整。
不管是字符串还是数字,操作符前后的空格只是为了显示美观,没有实际意义。
数字与字符串之间的自动转换
Perl会根据操作符的需要自动在数字和字符串之间进行类型转换,即如果是数字操作符则把操作数看成数字,如果是字符操作符则把操作数看成是字符串。
数字操作符遇到字符串类型的操作数,会自动将字符串转换成等效的十进制浮点数进行运算。字符串中后面的非数字部分和前置的空白会被忽略,如“12fred34”*“ 3”相当于“12”*“3”。第一个非空白字符不是数字的字符串会被转换成零,如“a12312”、“ q23”。
Perl内建的警告
有以下几种方式可以让perl发出警告:
a. 运行perl时加上-w选项,如:[root@centos1 chp1]# ./perl1 –w
b. 写入程序中:#!/usr/bin/perl –w
c. 在perl5.6以上版本中,在程序中写入use warnings;
d. 在程序中写入use diagnostics;这将显示更详细的警告,但是程序启动会慢很多
e. 运行perl时机上-Mdiagnostics选项,如:[root@centos1 chp1]# ./perl1 –Mdiagnostics
标量变量
标量变量名称以$开头,后面接着perl标识符:字母或下划线为首,后面可以跟上字母、数字或下划线,区分大小写。建议使用小写字母和下划线方式的命名方式。
双目操作符
$fred = $fred +5; 采用双目操作符写法为: $fred += 5;
$str = $str . “ing”; 采用双目操作符写法为:$str .= “ing”;
几乎所有的操作符都可以这么使用。
变量内插
在双引号中可以进行变量内插。如果在内插值后面紧接着输出其它字符,可以用花括号将变量名包围起来,如print “fred ate $n ${what}s. \n”; #这里进行了变量$n和$what的内插。
Perl比较操作符
比较 |
数值 |
字符串 |
记忆帮助 |
相等 |
== |
eq |
Equal |
不等 |
!= |
ne |
Not equal |
小于 |
< |
lt |
Less than |
大于 |
> |
gt |
Greater than |
小于或等于 |
<= |
le |
Less equal |
大于或等于 |
>= |
ge |
Greater equal |
布尔值
Perl没有专用的布尔数据类型,它靠以下这些简单的规则来判断:
a. 如果值为数字,0为假,其余为真
b. 如果值为字符串,空字符串(’’)为假,其余为真
c. 如果值不是数字也不是字符串,就先转换成数字或字符串再判断
特例:如果字符串是’0’时,会将其视为数字0,判断其布尔值为假。
可以用!这个单目取反操作符取得任何布尔值的相反值,如 ! $boolean
标准输入和chomp
标准输入<STDIN>返回的字符串,一般在最后都会跟有一个换行符。
Chomp的作用很简单:只能用在一个字符串变量上,用来去除它最后的一个换行符,而且只去除一个。Chomp的返回值是它实际移除的字符数(0或1)。
Undef值
如果某标量变量没有被赋值,那其初始值就是undef。在把该变量当做数字使用时undef表示0,当做字符串时undef表示空。可以把undef值赋值给变量,如$madonna = undef;
Defined函数
可以用defined函数来判断某变量值是不是undef,如:if (defind($madonna))