Perl语言在生物信息学中的应用-文档资料

上传人:日度 文档编号:143701381 上传时间:2020-09-01 格式:PPT 页数:51 大小:132KB
返回 下载 相关 举报
Perl语言在生物信息学中的应用-文档资料_第1页
第1页 / 共51页
Perl语言在生物信息学中的应用-文档资料_第2页
第2页 / 共51页
Perl语言在生物信息学中的应用-文档资料_第3页
第3页 / 共51页
Perl语言在生物信息学中的应用-文档资料_第4页
第4页 / 共51页
Perl语言在生物信息学中的应用-文档资料_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《Perl语言在生物信息学中的应用-文档资料》由会员分享,可在线阅读,更多相关《Perl语言在生物信息学中的应用-文档资料(51页珍藏版)》请在金锄头文库上搜索。

1、1,PERL在生物信息学中的应用,主讲:吴茂英 生物信息学与生物统计学系 上海交通大学,2,主要内容,PERL简介 PERL脚本的编写 PERL变量 Perl语法 PERL与正则表达式 PERL示例,3,PERL释义,Practical Extraction and Report Language 实用摘录和报告语言,但它其实不是缩写,Larry Wall,1987.12.18,Perl的历史,4,Perl的环境准备,Unix:大多数内置 一些软件也内置perl,比如apache/oracle Windows:ActivePerl5.10.0,5,Perl的工具,编辑工具:notepad,vi

2、 IDE:Komodo,Perl Dev Kit CGI:Top perl studio,Perl builder,perl edit,perlwiz,Mod_perl,6,Perl的功能,脚本语言,解释执行,无需编译 具有编译语言如c、Java的功能,又有shell脚本的方便 无数据类型区分,适于不太复杂的程序 适于不要求速度,不在乎内存CPU等系统资源的任务 强大的字符串处理功能 灵活或复杂的正则表达式 大多数平台支持,除了专用模块,可在不同平台运行,7,Perl的应用,Web编程:CGI,XML处理 系统管理 网络编程(安全脚本). 数据库管理 图像处理 其他众多的领域。,8,一个示例,

3、#!/usr/bin/perl Print “This is my first perl programn”; $a=; Print $a;,第一行: #!/usr/bin/perl 由什么程序执行以下的内容 注释: 输入: 输出:print $a:变量,无需指定数据类型,9,perl的四种变量,Scalar:标量,以$开始,后面以字母或_开头,再后面可以是字母或数字 array:数组,列表,以开头 Hash: 哈希,散列,以%开头 文件:大写字母 区分大小写,$Var, $VAR, $var 内置变量$/,$等,10,字符串变量,由双引号或单引号标识的一组字符组成。 最少0个字符(“”为空串

4、),最多可以占满内存,末尾不含null(0) “$string” = $str + “ing” != $string 记住一些常用的转义字符 print “the $var is $var.” 注意单引号的用法:不替换、不转义,$var=“str”; print “this is $var”; # ”this is str” print this is $var; # this is $var,11,变量初值,未创建时状态为undef,到达文件尾也为undef 说明变量为未定义:undef $a; 用在条件判断中:if(undef $a) 代替不关心的变量:$s=“a:b:c:d; ($a1,

5、undef,undef,$d1)=split(/:/, $s); 如果有undef变量又不知在哪,可加-w参数进行提示 #!/usr/bin/perl -w 创建后状态为defined 一般用在条件判断中if(defined $a) 整数初值为0,字符串初值为空串”。一般未赋值就使用时 $result = $undefined + 2;,12,相关函数,length():字符串长度 uc, lc, ucfirst, lcfirst:改变大小写函数 substr, index, pos:字符串函数 sin等三角函数 rand(), srand():随机发生函数 $lastchar = chop(

6、$str) # 截去最后一个字符 $result = chomp($str) # 截去末尾的行分隔符(通常为”n”),行分隔符由$/定义,13,控制结构,if(condition1) elsif(condition2)else unless() until() do until() while() do while () for(;) foreach循环语句,14,foreach,语法:foreach $w(list|array)statement ()内可以是数组a,也可以是列表(1,2,3) 数组元素值可以修改,列表则是常量 $w不影响本来已定义的变量$w,循环结束后恢复 可以用$a(a)

7、用相同的变量名称 示例: foreach $a(a)用于数组 foreach $a(1,2,3,4)用于列表 foreach $k(keys %h)用于哈希/散列 foreach $a(a1,2,4)仅对数组部分元素 foreach (a)缺省循环变量为$_,15,循环控制,last:退出循环 next:进入下一循环 redo:重新执行本次循环 goto:跳转 continuestatement,16,单行条件语句与循环语句,print $a if $a=0; print $a unless($a=0); print $a while ($a-=0); print $a until ($a-=

8、0),用|, die函数:在控制台标准错误输出信息后退出程序。 warn: 输出信息后不退出程序,只起警报作用。 $!:内部变量,包含错误代码。 $:内部变量,包含错误信息。,17,列表数组的形式,形式:(1,”a”,2.3, $a, $x+1),其元素可以是数字、字符串、变量、表达式 空列表(),单元素列表(2)不同于标量2 qw(1 $a str) ()可以用其他符号表示,如 元素可以是数值、变量、不带引号的字符串,中间用空格分开,18,范围表示的列表,.:范围运算符,每次增加1,如1.3 (1.6)=(1,2,3,4,5,6) (1,2.5,6)=(1,2,3,4,5,6) (3.3)=

9、(3) (2.4.5.3)=(2.4,3.4,4.4) (4.5.1.6)=() (“aa”.”ad”)=(“aa”,”ab”,”ac”,”ad”) $month=(01.31) ($a,$a+3)=(3,4,5,6) if $a=3,19,数组列表的存储,a=(1,2,3),不同于$a,初始值为() 元素形式:$a0表示第一个元素,索引从0开始,$a-1表示倒数第一个元素 数组的赋值: a=(1,2,3,4); b=a; b=(2,3); a=(1,a,4); a=; #从屏幕输入进行赋值,按下CTRL-d结束 改变元素的值:$a1=3; 超出数组大小的元素赋值:$a5=6; #自动增长,其

10、他元素为NULL 读取不存在的元素为空:$b = $a6;,20,数组的读出,a=(1,2,3); $a=$a1; ($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; # 数组的第一个元素$a0 打印数组:print a; # 元素直接相连 print “a”; # 元素之间用空格分开,21,数组片段,a=(1.5) sub=a0,1,3; a1,3=(“

11、a”,”b”); b=(1,2,3); sub=ab; a1,2=a2,1; a1,2,3=a3,2,4;,22,数组操作函数,sort:缺省按字母排序 $a, $b表示数组元素,_代表数组本身 reverse a; # 取数组的逆序 chop a; # 每个元素截去最后一个字符 shift(a); # 删除数组第一个元素并返回该值,缺省对ARGV数组 unshift(a); # 在数组头部添加元素,返回新数组长度 push(a,$a); # 在数组末尾添加元素 pop(a); # 删除数组末尾元素,23,数组操作函数(二),join(连接符号, a)把数组连接为一个字串 a=(a,b); j

12、oin(:, a)=“a:b”; split(/分隔符/, 分割串, 长度) 分隔符:缺省为空格,可省略 分割串:缺省为$_,可省略 长度:可省略,缺省为全部分割 $s=“a,b,c”; a=split(/,/,$s); a=(a,b,c); a=split(/,/,$s, 2); a=(a,b,c);,24,数组函数(三),splice函数:ret = splice(a, skip, length, newlist); 对数组a进行操作,跳过skip个元素,然后用newlist替换length个元素 newlist长度可以不为length,但其替换长度总为length 如果length=0表

13、示为插入;如果newlist=()则表示为删除 当length和newlist都省略时表示全部删除 found=grep(/pattern/, search)对数组search的每个元素进行搜索匹配pattern,匹配元素返回到found map(expr, list)对数组list的每个元素进行expr运算,返回运算后的数组。元素用$_替代,如map($_+1, (1,2)(2,3),25,二维数组,aoa=1,2,3,a,b,c; 该数组的元素为两个数组 子数组访问: $aoa-0(1,2,3) 子数组元素列表:$aoa-00,1,2 子数组元素访问:$aoa-00 a=(1,2,3);b

14、=(a,b,c); $aoa=a,b; $aoa-00;,26,关联数组:哈希/散列,关联数组的表示:%h=(1,a,2,b); 关联数组的下标为关键字key,由key得到的值为value 上式的意义是%h=(1=a,2=b); 元素形式$h1=a,27,关联数组的赋值,%a=(“key1”,1,”key2”,2); %h=a; a=%h; %h1=%h2; ($a,%h)=array; %h=(%first, %second); %h1=(%h2, k, v) 函数的返回:%h=split(); keys=(a,b,c); hashkeys=hashreverse keys;,28,关联数组

15、操作函数,keys(%hash), values(%hash)分别返回键和值的列表,返回元素无顺序 ($key, $value)=each(%hash)效率高于先用foreach $k (keys %h), 再用$hash$k exists $hashkey判断关键字是否存在 undef(%h)相当于删除散列%h=(); delete,29,关联数组的顺序,foreach $w(sort keys(%hash) # 按照字符串排序 或者 foreach $w(sort $a$b keys(%hash) #数值排序,30,文件,存放于磁盘,用于读写访问,访问前必须先打开文件,结束时关闭文件 op

16、en(HANDLE, “filename”) | die $!; 成功返回非零,失败返回零 HANDLE:文件句柄,用来代表操作的文件。以字母开头,字母、数字、下划线组成,一般用大写字母 缺省打开的句柄STDIN, STDOUT, STDERR, 文件描述符为0,1,2。不必调用open就可以直接访问 STDIN:键盘输入,控制台。 STDOUT:屏幕,显示屏。 STDERR:错误输出,显示屏。,31,文件访问模式,只读:open(F, “filename”); 文件不存在则创建新文件,存在则清空重写 追加:open(F, “filename”);在存在的文件后面追加内容 读写:open(F, “+,文件不存在则创建,存在则清空再写 读写:+,文件不存在则创建,存在则追加 管道:|, open(F,“| cathello”);把文件F的输出(print F $a)作为后的输入。 open(F,“comm|”);把comm的输出作为F的输入。以下的内容只要读出。comm为命令。,32,文件缓冲,缓冲 无缓冲 打开

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 数据通信与网络

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号