资源描述:
《perl语言入门实战习题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《Perl语言入门实战习题》一、计算FASTA文件中每条序列的长度;输入文件,FASTA格式:注:如果输入文件在windows下产生,在Linux系统下操作时,宜先用dos2unix处理:用法:dos2unix输入文件输出文件:Perl代码:#!/usr/bin/perl-wusestrict;unless(@ARGV==2){#@ARGV传给脚本的命令行参数列表die"Usage:perl$0";#当命令行参数不是2的时候输出使用说明}my($infile,$outfile)=@ARGV;#把命
2、令行参数赋值给输入文件和输出文件openIN,$infile
3、
4、die"error:can'topeninfile:$infile";#打开输入文件句柄INopenOUT,">$outfile"
5、
6、die$!;#打开输出文件句柄OUT$/=">";;#设置输入记录分隔符为”>”,并去除第一个”>”while(my$seq=){#把序列ID行和序列赋值给$seqmy$id=$1if($seq=~/^(S+)/);#获取序列IDchomp$seq;#去掉末尾的”>”$seq=~s/^.+?//;#删除第一行$seq=~s
7、/s//g;#删除序列中的空白字符my$len=length($seq);#计算序列长度printOUT"$idt$len";#输出结果到输出文件}$/="";#把输入记录分隔符改为默认值closeIN;#关闭输入文件句柄closeOUT;#关闭输出文件句柄一、计算FASTA文件中每条序列的GC含量;输入文件同上,输出文件:Perl代码:#!/usr/bin/perl-wusestrict;unless(@ARGV==2){#@ARGV传给脚本的命令行参数列表die"Usage:perl$0
8、";#当命令行参数不是2的时候输出使用说明}my($infile,$outfile)=@ARGV;#把命令行参数赋值给输入文件和输出文件openIN,$infile
9、
10、die"error:can'topeninfile:$infile";#打开输入文件句柄INopenOUT,">$outfile"
11、
12、die$!;#打开输出文件句柄OUT$/=">";;#设置输入记录分隔符为”>”,并去除第一个”>”while(){#$_=,把序列ID行和序列赋值给$_,$_=可以省略不写my$id=$1if(/^(S+)/)
13、;#获取序列IDchomp;#去掉末尾的”>”s/^.+?//;#删除第一行s/s//g;#删除序列中的空白字符my$GC=(tr/GC/GC/);#计算G或C碱基个数my$AT=(tr/AT/AT/);#计算A或T碱基个数my$len=$GC+$AT;#计算序列非N长度my$gc_cont=$len?$GC/$len:0;#计算GC含量,如果长度为0,GC含量算0printOUT"$idt$gc_cont";#输出结果到输出文件}$/="";#把输入记录分隔符改为默认值closeIN;#关闭输入文件句柄closeOUT;
14、#关闭输出文件句柄一、求反相互补序列;输入文件同上,输出文件也是FASTA格式Perl代码:#!/usr/bin/perl-wusestrict;unless(@ARGV==2){#@ARGV传给脚本的命令行参数列表die"Usage:perl$0";#当命令行参数不是2的时候输出使用说明}my($infile,$outfile)=@ARGV;#把命令行参数赋值给输入文件和输出文件openIN,$infile
15、
16、die"error:can'topeninfile:$infile";#打开输入文件句柄
17、INopenOUT,">$outfile"
18、
19、die$!;#打开输出文件句柄OUT$/=">";;#设置输入记录分隔符为”>”,并去除第一个”>”while(){#$_=,把序列ID行和序列赋值给$_,$_=可以省略不写my$id=$1if(/^(S+)/);#获取序列IDchomp;#去掉末尾的”>”s/^.+?//;#删除第一行s/s//g;#删除序列中的空白字符$_=reverse$_;#序列方向tr/ATCG/TAGC/;#序列互补printOUT">$id",$_,"";#输出结果到输出文
20、件}$/="";#把输入记录分隔符改为默认值closeIN;#关闭输入文件句柄closeOUT;#关闭输出文件句柄二、列表信息整合;输入列表1:序列长度文件输入文件2:序列测序覆盖深度文件