perl 的基本数据类型

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";

 结果:

[root@localhost 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的方法
[root@localhost 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进行字符串拼接,作为一个整体
[root@localhost tmp]# perl txt 
aceme
aceme

x 重复 x次数小于1,则为空,x的前后需要空格

#/usr/bin/perl
$a='ox' x 5;
print "$a\n";
[root@localhost 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 = += *= ** |^ 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章