Perl基础教程--精华篇
Posted 生信人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl基础教程--精华篇相关的知识,希望对你有一定的参考价值。
一、Perl的环境准备
Linux/Unix:大多数内置 一些软件也内置perl,
Windows:ActivePerl5.10.0 Perl的工具
二、编辑工具:
notepad++、ultraedit,
三、变量。
不像C语言一样,perl无需指定数据类型。
1、 perl的四种变量
Scalar:标量,以$开始,后面以字母或_开 头,再后面可以是字母或数字;
array:数组,列表,以@开头;
Hash: 哈希,散列,以%开头 文件:
2、变量特征
大写字母 区分大小写:$Var,$VAR,$var
内置变量:$/,$@、@ARGV、$_等
3、字符串变量
由双引号或单引号标识的一组字符组成;最少0个字符(“”为空串),最多可以占满内存,
"${str}ing"=$str +ing" !=$string
记住一些常用的转义字符像\.。加上\则$var不是系统内置变量了。
print“the \$var is $var.”
注意单引号的用法:不替换、不转义
$var="str”;
print “this is $var";# ”this is str”赋值的变量的内容
print ‘this is $var'; # ‘this is $var'系统内置变量
4、变量初值
未创建时状态为undef,到达文件尾也为undef。
5、函数
length():字符串长度
uc,lc,ucfirst,lcfirst:改变大小写函数
substr,index,pos:字符串函数
sin等三角函数
rand(),srand():随机发生函数
chop函数: $lastchar =chop($str)#截去最后一个字符
chomp函数:$result=chomp($str)#截去末尾的行分隔符(通常 为”\n”),行分隔符由$/定义
die函数:在控制台标准错误输出信息后退出程序。
warn: 输出信息后不退出程序,只起警报作用。
$!:内部变量,包含错误代码。
$@:内部变量,包含错误信息。
6、控制结构
if(condition1){} elsif(condition2){}else{}}
unless(){}
until(){}
do{} until()
while(){}
do{} while()
for(;;){}
foreach循环语句
示例:
foreach $a(@a){statement;}#用于循环数组,每一行存储到$a中
foreach $a(1,2,3,4){}用于列表
foreach $k(keys %h){}用于哈希/散列
foreach $a(@a[1,2,4]){}仅对数组部分元素
foreach (@a){}缺省循环变量为$_
7、 循环控制
last:退出循环
next:进入下一循环
redo:重新执行本次循环
goto:跳转
8、列表——数组的形式
形式:(1,”a”,2.3,$a,$x+1),其元素可以是数 字、字符串、变量、表达式;
空列表(),单元素列表(2)不同于标量2;
qw(1 $a str) :()可以用其他符号表示,如<> 元素可以是数值、变量、不带引号的字符串, 中间用空格分开
9、数组——列表的存储
@a=(1,2,3),不同于$a,初始值为();
元素形式:$a[0]表示第一个元素,索引从0开始, $a[‐1]表示倒数第一个元素;
数组的赋值: @a=(1,2,3,4);@b=@a; @b=(2,3);@a=(1,@a,4);
@a=<>;#从屏幕输入进行赋值,按下CTRL‐d结束;
改变元素的值:$a[1]=3;
超出数组大小的元素赋值:$a[5]=6;#自动增长,其他元 素为NULL;
10、 数组的读出
@a=(1,2,3);
$a=$a[1];
($x,$y,$z)=@a;=>$x=1,$y=2,$z=3;
($x,$y)=@a;=> $x=1,$y=2;
($a,$b,$c,$d)=@a;=> $a=1,$b=2,$c=3,$d=“”;
$a=@a=$#a+1;#$a为数组长度,$#a为数组的最后一个元 素的索引
($a)=@a;#数组的第一个元素$a[0]
打印数组:print @a;#元素直接相连;
print“@a”;#元素之间用空格分开
11、数组片段
@a=(1..5)
@sub=@a[0,1,3];
@a[1,3]=(“a”,”b”);
@b=(1,2,3);
@sub=@a[@b];
@a[1,2]=@a[2,1];
@a[1,2,3]=@a[3,2,4];
12、数组操作函数
sort: $a,$b(系统内置变量自定尽量避免使用)表示数组元素;@b=sort{$a<=>$b}@a为对一维数组排序;@b=sort{$a->[0]<=>$b->[0] }@a为对二维数组排序;@b=sort{$a->[0]<=>$b->[0] or $a->[3]<=>$b->[3] }@a##先按照第一列再按照第4列排序;以上均为对数字按照从小到大排序,若按照从大到小则$a与$b位置反过来;对字符排序使用cmp取代<=>;
reverse @a;#取数组的逆序
chop @a;#每个元素截去最后一个字符
shift(@a);#删除数组第一个元素并返回该值,缺省对 @ARGV数组
unshift(@a);#在数组头部添加元素,返回新数组长度
push(@a,$a);#在数组末尾添加元素
pop(@a);#删除数组末尾元素
join(连接符号,@a)把数组连接为一个字串 @a=('a’,‘b’);join(‘:’,?@a)=“a:b”; split(/分隔符/,分割串,长度) 分隔符缺省为空格,可省略; 分割串缺省为$_,可省略; 长度:可省略;缺省为全部分割。
$s=“a,b,c”;
@a=split(/,/,$s);#即@a=(‘a’,’b’,’c’);
@a=split(/,/,$s,2);#即 @a=(‘a’,’b’,’c’);
splice函数:@ret=splice(@a,skip,length,@newlist);
对数组@a进行操作,跳过skip个元素,然后用@newlist替换 length个元素 @newlist长度可以不为length,但其替换长度总为length 如果length=0表示为插入;如果@newlist=()则表示为删除 当length和@newlist都省略时表示全部删除 。
@found=grep(/pattern/,@search)对数组@search的每个 元素进行搜索匹配pattern,匹配元素返回到@found。
map(expr,@list)对数组@list的每个元素进行expr运算, 返回运算后的数组。元素用$_替代,如map($_+1, (1,2)) (2,3)
13、二维数组
@aoa=[[1,2,3],[‘a’,’b’,’c’]]; 该数组的元素为两个数组
子数组访问:$aoa[0][0]=1 、$aoa[1][2]="c";
14、关联数组:哈希/散列
关联数组的表示:%hash=(1,’a’,2,’b’);
关联数组的下标为关键字key,由key得到的值为value
上式的意义是%hash=(1=>‘a’,2=>’b’);
元素形式$hash{1}=‘a’
15、关联数组的赋值
%a=(“key1”,1,”key2”,2);
$a{"liu"}="wang";
$a{"you"}="we";
16、关联数组操作函数
keys(%hash),values(%hash)分别返回键和值 的列表,返回元素无顺序
($key,$value)=each(%hash)效率高于先用 foreach $k(keys %h),再用$hash{$k}
exists $hash{‘key’}判断关键字是否存在 undef(%h)相当于删除散列%h=();
delete :删除键$a{"you"}
17、关联数组的顺序
foreach $w(sort keys(%hash))#按照字符串排序
foreach $w(sort {$a<=>$b}keys(%hash))#数值排序
有啥不懂得欢迎留言,下期讲述文件相关操作,敬请关注!
以上是关于Perl基础教程--精华篇的主要内容,如果未能解决你的问题,请参考以下文章