1、变量
scalar:$varname 变量
数组: @varnanme
Hsah: %varname
文件: 通常大写字母
2、变量名的命名规则
简单变量以$开头后面跟字母数字或者下划线;
区分大小写;
变量名长度不限;
没有关键字,但是不能和内置变量重名;
数值:
12 -12 12e3 #(科学计数法,e不区分大小写) 1_222_2333 #-只是分隔符,便于阅读,perl语句执行时会自动忽略 012 #0开头的默认是八进制数 0x2f #十六进制数,f不区分大小写
#/usr/bin/perl $a=1283_11_31_51; print "$a \n";
结果:
[[email protected] tmp]# perl txt 1283113151
浮点
11.5 -.3 .3 0.3 2.5E6 #(e不区分大小写,后面数字为1-3位,整数位15位有效数字,超出则截断) 指数型浮点:指数为-309~308 ,太小则数值为0,太大则为1.#INF
字符串
"" 或者‘‘
最少为为空"",最多可以占满空余内存,结尾不包含c语言的null(‘\0‘)
变量引用
变量引用使用变量名的最长匹配为原则:
$var="it"; $varing="ms"; print "\$var is $var\n" #此处最长匹配输出的为$varing的值 print "\$var is ${var}\n" #这是正确引用$var的方法 [[email protected] tmp]# perl txt $var is it $var is ms
转义字符
perl的转义字符和其他语言的转义字符类似:
\a | \b | \l | \xnn | ||||
\cn | \e | \r | ‘‘ | ||||
\L | \f | \t | \‘ | ||||
\n | \Q | \nnn | \\ |
字符比较
数值比较:
>,<,==,<=,>=,!=,<=>
<=>:$a <=> $b;
$a < $b,返回-1
$a = $b,返回0
$a > $b,返回1
perl会自动转换操作数到int,不能转换的转换为0
字符串比较:
lt gt ge eq le ne cmp
安照字母表的顺序:num<大写<小写 (a-z)
从左向右比较
当一个是另一个前缀时,较长的一个值大:god < godness
字符串可以从右向左进位,字母和数字分别进行
自动转换操作数为字符串
cmp用法同<=>
空字符串,0,undef的为假
字符串的连接
. 连接
print $x=‘a‘.‘b‘ ; #$x=‘ab‘
#/usr/bin/perl $a="ace"; $b="me"; print "$a$b\n"; #把$a$b分别替换 print $a.$b; #把$a$b进行字符串拼接,作为一个整体 [[email protected] tmp]# perl txt aceme aceme
x 重复 x次数小于1,则为空,x的前后需要空格
#/usr/bin/perl $a=‘ox‘ x 5; print "$a\n"; [[email protected] tmp]# perl txt oxoxoxoxox
逻辑运算
&& and || or ! not xor
先计算逻辑运算左在计算右边
位操作
& | ~ ^ << >>
操作数为二进制整数,小数则截取为整数处理
赋值运算
= += -= *= /= %= **= &= |= ^= .=
($a=$b)+=3 #等价于 $a=$b; $a=$a+3;
++ --
可以用于字符串的自增,z Z 9时进位:
$a=‘az‘,$a++; →$a=‘ba‘
不可以用于字符串的自减运算,$a--,按数值运算,转换为0,再自减
$a=‘az‘,$a--; →$a=-1
字符串含有非字母数值,数值位于字母中间,++运算转为0在自增
$a=‘a2z‘,$a++; →$a=1
$b=++$a先执行自增在执行赋值,$b=$a++先执行赋值在执行自增
$a=‘a2z‘; $b=$a++; →$b=‘a2z‘
$a=‘a2z‘; $b=++$a; →$b=1
只能作用于单一变量:
($a+$b)++;#这种是错误的
条件运算
条件?真:假
优先执行条件表达式,真执行?后的内容,假则执行:后的内容
$result=$var==0?14:7
执行条件语句:$var==0,成立则执行赋值 $result=14,不成了则$result=7
条件变量在等号左边
$var==42?$var1:$var2 =14
各种运算的优先级
++/-- < <= > >= lt le gt ge ?: -~! == != <=> eq ne cmp = += *= ** |^