1.perl不用声明变量类型,
$ 声明单数标量, (标量就是单数变量,数组和散列就是复数变量)
@声明数组
%声明散列
&声明子例程
* typeglob *a 表示所有叫a的东西
2. “” 变量内插,也就变量替换 '' 取消内插 , `` 执行外部命令
3. 标量也可以保存对其他数据结构的引用
$ary =\@myarray ;
$aryy=\%myhash;
$ary=\&mysub;
4.用数组可以给多个标量赋值
@home=("a,","b","c","d"); #声明一个数组
{$a,$b,$c,$d}=@home;
数组是有序的; 散列是无序的标量,自动增长,以key/value形式存储,查找比较快
散列:
%myhash=("sun"=>"sunday","fri"=>"Friday");
或者
%myhash=("sun","sunday","fri","Friday")
取值
%myhas{"sun"}
5.复杂的数据结构
(1)将列表赋值给一个标量
$wife{"jacbo"}=["a","b","c"]; 这个标量是散列表的一个值 []能将一个列表转换成一个标量格式
取值
$wife{"jacbo"}[0]="a";
$wife{"jacbo"}[0]="b";
$wife{"jacbo"}[0]="c";
$wife{"jacbo"}[0]="d";
对每个散列进行赋值
$kids_of_wife{"jacob"}={"leach"=>["a","b","c","d"],
"reach"=>["e","f"]},
"bilha"=>["g","h"]
};
6.模块
package Camel;
$fido=&fetch();
fido相当于 $Camel::fido
&fetch()相当于&Camel::fetch
使用其他模块 use Camel;
7.用perl解释器执行
perl -e 'print "Hello,world!\n"';
有的解释器路径不支持32个字符 即 #!/usr/bin/perl不能超过32个字符,测试脚本也不能命名为test,unix系统内置test命令会优先执行。
#!/usr/bin/perl -w #开启调试开关
8.文件句柄
open() 创建并关联一个文件
open(SESAME,"filename") #从现有文件读取
open(SESAME,"<filename") #同上,显示指定
open(SESAME,">filename") #创建文件并写入
open(SESAME,">>filename") #附加到现有文件后面
读行操作符 <>来读一行
chop() 不加区别的去除字符串最后一个字符,chomp 仅删除结束符\n标记,同时返回被删除的字符数
9.比较操作符
数字 字符串
== eq
!= ne
< lt
> gt
<= le
>= ge
<=> cmp
-e $a 文件是否存在
-r $a 文件是否可读
-w $a 文件是否可写
-d $a 文件是否是目录
-f $a 是否是普通文件
-T $a 是否是文本文件
10. true or false
除"" 和0 外,所有字符都为true;除0外,所有数字都是true;所有的引用都是true,所有未定义的值都是false
11.内置函数
sort(@my_array) #排序
reverse(@my_array) #倒序
join,split 合并拆分字符串
$var = join(',',@my_array);