您好,欢迎访问三七文档
Perl语言入门刘文彬liuwenbin@bgisolutions.comOUTLINE1.Perl简介2.基本操作3.控制结构4.模式匹配5.进程管理6.实战总结OUTLINE1.Perl简介2.基本操作3.控制结构4.模式匹配5.进程管理6.实战总结1Perl简介•Perl的产生•拉里·沃尔(LarryWall)•#!/usr/bin/perlprint“Hello,I’mLarryWall.\n”;•“如果没有Perl——Wall发明的通用编程语言,Yahoo是不可能开始的。”——大卫·费罗(DavidFilo)OUTLINE1.Perl简介2.基本操作3.控制结构4.模式匹配5.进程管理6.实战总结2基本操作•基本数据类型:标量、数组、哈希、函数$、@、%、&•基本操作符算术、比较、逻辑、条件•文件读写2.1基本的数据类型•标量,指示符:$my$aim;$aim=1000000000;#整型my$act=1.5;#浮点数$act=1.5e+10;#浮点数my$gain=“4,5000w”;#字符串$gain=‘ZhangGongzi’;#字符串my$reality=undef;#相当于my$reality;2.1基本的数据类型单引号与双引号:my$pay=6000;print“Thepayis$pay\n”;#显示:Thepayis6000print‘Thepayis$pay\n’;#显示:Thepayis$pay\nprint“Thepayis\$$pay\n”;#使用“\”#显示:Thepayis$6000“\n”换行;“\t”制表符;2.1基本数据类型•数组,指示符:@my@array=(1,2,3,4);@array=(1..4);print“@array\n”;#显示:1234打印数组array的第1个元素:print“$array[0]\n”;#显示:1,数组索引号从0开始把数组的最后一个元素赋值为10:$array[-1]=10;#@a:(1,2,3,10)my@array2=(“a”,”b”,”c”,1,2);@array2=qw(abc12);2.1基本数据类型•哈希(散列、关联数组),指示符:%特征:键(key)=值(value);键和值一一对应my%hash;%hash=(a=1,b=2,c=3);print$hash{a};#显示:1print“b=$hash{b}\n”;#显示:b=2%hash=(‘a’,1,‘b’,2,‘c’,3);$hash{d}=1;2.1基本数据类型•函数(子程序),指示符:&定义:sub函数名{操作;返回值;}使用:&函数名(参数列表);subPI{3.1415926;}my$pi=Π#或者写成:my$pi=PI();print$pi;#显示:3.1415926subsum{my($a,$b)=@_;#@_是输入参数数组return($a+$b);#返回值,return可省略}my$s=sum(1,2);print$s;#显示:32.1基本数据类型•常用的perl函数:•chop和chomp:my$line=“hello\n”;chomp$line;#删掉$line末尾的”\n”($/指定)chop$line;#删除$line最后一个字符•split和join:#切割函数、胶水函数$str=“A:B:C”;my@arr=split/:/,$str;#@arr=qw(ABC)$str=join(“,”,@arr);#$str=“A,B,C”2.1基本数据类型•scalar返回数组元素个数my@arr=(1,2,3,4);printscalar(@arr);#显示4my$num=@arr;print$num;#显示4$num=$#arr;prnt$num;#显示3•length返回标量长度my$len=length(“ATCGAA”);print$len;#显示62.1基本数据类型•字符串截取函数:substr(标量,起点,长度)my$seq=“ATGTAA”;my$code=substr($seq,0,3);print$code;#显示ATGsubstr($seq,0,3)=“TTG”;print$seq;#显示TTGTAA•标量或数组倒序:reverse函数my@arr=(1,2,3,4);my@rev=reverse@arr;#@rev=(4,3,2,1)my$str=“ATCG”;my$rev=reverse$str;#$rev=“GCTA”2.1基本数据类型shift、pop、unshift、push函数my@arr=(1,2,3,4);取数组的第一个元素:my$first=shift@arr;#@arr:(2,3,4)取数组的最后一个元素:my$last=pop@arr;#@arr:(2,3)往数组开头加元素:unshift@arr,1;#@arr:(1,2,3)往数组后面加元素:push@arr,(4,5);#@arr:(1,2,3,4,5)2.1基本数据类型•对数组排序:sort函数按数字大小排序:@SORT=sort{$a=$b}@array;按字典顺序排序:@SORT=sort{$acmp$b}@array;#1默认是按字典顺序排序:@SORT=sort@array;#2默认是从大到小排序#3倒序排序:把上式的$a和$b位置调换举例:my@arr=(2,14,3);my@arr2=sort@arr;print“@arr2\n”;#输出:1423@arr2=sort{$a=$b}@arr;print“@arr2\n”;#输出:23142.1基本数据类型•Keys和values函数my%hash=(a=1,b=2,c=3);my@key=keys%hash;#@key:(c,a,b)my@value=values%hash;#@value:(3,1,2)print“keys=@keys\nvalues=@value\n”;显示:keys=cabvalues=3122.1基本数据类型•defined和exists函数defined:如果其参数未被定义,或值是undef就返回false,否则返回trueexists:检验一个key在hash中是否存在,存在时返回true,否则返回falsemy$str;defined$str;#返回false$str=1;defined$str;#返回truemy%hash=(a=1,b=2,c=3);exist$hash{a};#返回trueexist$hash{d};#返回false$hash{d}=undef;exist$hash{d};#返回true2.1基本数据类型•知识点回顾:基本数据类型:标量、数组、哈希,函数my$、@、%,sub&常用perl函数print输出chop和chomp删除最后一个字符split和join分割函数、胶水函数scalar和length数组元素个数、标量长度reverse标量或数组倒序substr截取字符串shift、pop、unshift、push数组前去、后去、前加、后加元素sort{$a=$b}、{$acmp$b}keys和values取哈希的健和值2.1基本数据类型•补充知识点:perl内置特殊变量$_默认的输入/输出和模式搜索空间$/当前输入记录分隔符,默认是换行符$$当前进程号$!系统报错信息$0当前运行程序名@_传给子程序的参数列表@ARGV传给脚本的命令行参数列表2.2基本操作符•数字运算符:+、-、*、/、%、**、++、--、+=、-=、*=、/=、.=操作注释$a的值$a=10%3;10除以3的余数;1$a=10**2;10的2次方;100$a++;$a=$a+1;101$a--;$a=$a-1;100$a+=2;$a=$a+2;102$a-=2;$a=$a-2;100$a*=2;$a=$a*2;200$a/=2;$a=$a/2;100$a=int(10/3);10/3向零取整32.2基本操作符•..、.、x、,@a=(1..4);#@a=(1,2,3,4),注:不能由大到小$s=“Test”.1;#$s=“Test1”$s.=2;#$s=“Test12”@a=(1)x4;#@a=(1,1,1,1)$s=“A”x4;#$s=“AAAA”my($a,$b)=(1,2);#my$a=1;my$b=2;$a=$b+1,$b=$a+1;#$a=$b+1;$b=$a+1;($a,$b)=(1,2);($a,$b)=($b+1,$a+1);#$a=3,$b=2#不等于:$a=$b+1;$b=$a+1;2.2基本操作符•比较操作符数值字符串描述举例解说==eq相等$a==2$a=2为真,否则为假!=ne不等$a!=2$a不等于2为真,否则为假lt小于$a2$a2为真,否则为假gt大于$a2$a2为真,否则为假=le小于或等于$a=2$a=2为真,否则为假=ge大于或等于$a=2$a=2为真,否则为假=cmp比较,返回1、0、-1$a=$b$a$b为1,$a=$b为0,$a$b为-12.2基本操作符•逻辑操作符逻辑或:$a||$b或$aor$b#a、b之一为真则为真逻辑与:$a&&$b或$aand$b#a、b都为真时才为真逻辑非:!$a或not$a#a假时为真逻辑异或:$axor$b#a、b一真一假时为真•条件操作符(三目操作符):条件?值1:值2,当条件为真时取值1,为假时取值2,如:$result=($var==0)?14:7;2.3文件读写操作•基本的I/O操作:•输出:print“Hello\n”;print“Say\”Hello\”toBGIer”,”\n”;print“EOF”;#遇到“EOF”开头的行才输出结束A:“WelcometoBGI,hehe~”B:“Whatdoyoumeanby‘hehe’?”EOF#EOF开头,输出结束2.3文件读写操作•“”(本地文档操作符)使用格式:print“文档标志”输出内容文档标志1:“”与“文档标志”之间不能有空格;2:末尾的文档标志应顶头书写,标识输出结束•输入读取标准输入STDIN:$line=STDIN;2.3文件读写操作•文件输入:#打开句柄:openIN,“$infile”ordie$!;#读文件#或者:openIN,$infileordie$!;my$line=IN;#钻石符print$line;closeIN;#关闭句柄2.3文件读写操作•输出到文件#打开句柄:openOUT,””,$outfileordie$!;#打开文件$outfile#或者:openOUT,”$outfile”ordie$!;#追加到文件(原来文件中的内容保留):openOUT,”$outfile”ordie$!;#输出内容到文件:printOUT“Hello,BGIer\n”;#输入内容HelloBGIer到文件中#关闭句柄:closeOUT;#输出结束2.3文件读写操作•$/(当前输入记录分隔符,默认是换行符)的使用:输入文件test.fasta:Scaffold1AAAAATCTAGACGAScaffold2ATCTAAATATTTTAACopenIN,”test.fasta”ordir$!;my$line=IN;print$line;#显示:Scaffold1$line=IN;print$line;#显示:AAAAATCTA$line=IN;print$line;#显示:GACGAcloseIN;2.3文件读写操作$/=“”;#把输入记录分隔符改为””openIN,”test.fasta”ordir$!;my$line=IN;print$line;#显示:$line=IN;print$line;closeIN;#显示:Scaffold1AAAAATC
本文标题:Perl语言入门
链接地址:https://www.777doc.com/doc-5282916 .html