Perl语言入门实战习题[试题]

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Perl语言入门实战习题[试题] 《Perl语言入门实战习题》

一、计算FASTA文件中每条序列的长度; 输入文件,FASTA格式:

注:如果输入文件在windows下产生,在Linux系统下操作时,宜先用dos2unix处理:

用法:dos2unix 输入文件

输出文件:

Perl代码:

#!/usr/bin/perl -w

use strict;

unless (@ARGV==2) { # @ARGV 传给脚本的命令行参数列表

die"Usage: perl $0 \n"; # 当命令行参数不是2的时候输出使用说明 }

my ($infile,$outfile) = @ARGV; # 把命令行参数赋值给输入文件和输出文件 open IN,$infile || die"error: can't open infile: $infile"; # 打开输入文件句柄IN open OUT,">$outfile" || die$!; # 打开输出文件句柄OUT $/=">";; # 设置输入记录分隔符为”>”,并去除第一个”>”

while ( my $seq = ){ # 把序列ID行和序列赋值给$seq

my $id = $1 if($seq =~ /^(\S+)/); # 获取序列ID

chomp $seq; # 去掉末尾的”>”

$seq =~ s/^.+?\n//; # 删除第一行

$seq =~ s/\s//g; # 删除序列中的空白字符

my $len = length($seq); # 计算序列长度

print OUT "$id\t$len\n"; # 输出结果到输出文件

}

$/="\n"; # 把输入记录分隔符改为默认值

close IN; # 关闭输入文件句柄

close OUT; # 关闭输出文件句柄

二、计算FASTA文件中每条序列的GC含量; 输入文件同上,输出文件:

Perl代码:

#!/usr/bin/perl -w

use strict;

unless (@ARGV==2) {# @ARGV 传给脚本的命令行参数列表

die"Usage: perl $0 \n";# 当命令行参数不是2的时候输出使用说明

}

my ($infile,$outfile) = @ARGV;# 把命令行参数赋值给输入文件和输出文件open IN,$infile || die"error: can't open infile: $infile";# 打开输入文件句柄IN open OUT,">$outfile" || die$!;# 打开输出文件句柄OUT

$/=">";;# 设置输入记录分隔符为”>”,并去除第一个”>” while

(){# $_=,把序列ID行和序列赋值给$_,$_= 可以省略不写my $id = $1 if(/^(\S+)/);# 获取序列ID

chomp; # 去掉末尾的”>”

s/^.+?\n//;# 删除第一行

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

含量算0

print OUT "$id\t$gc_cont\n"; # 输出结果到输出文件 }

$/="\n";# 把输入记录分隔符改为默认值

close IN; # 关闭输入文件句柄

close OUT;# 关闭输出文件句柄

三、求反相互补序列;

输入文件同上,输出文件也是FASTA格式 Perl代码:

#!/usr/bin/perl -w

use strict;

unless (@ARGV==2) {# @ARGV 传给脚本的命令行参数列表

die"Usage: perl $0 \n";# 当命令行参数不是2的时候输出使用说明

}

my ($infile,$outfile) = @ARGV;# 把命令行参数赋值给输入文件和输出文件open IN,$infile || die"error: can't open infile: $infile";# 打开输入文件句柄IN open OUT,">$outfile" || die$!;# 打开输出文件句柄OUT $/=">";;# 设置输入记录分隔符为”>”,并去除第一个”>” while (){# $_=,把序列ID行和序列赋值给$_,$_= 可以省略不写my $id = $1 if(/^(\S+)/);# 获取序列ID

chomp; # 去掉末尾的”>”

s/^.+?\n//;# 删除第一行

s/\s//g; # 删除序列中的空白字符

$_ = reverse $_; # 序列方向

tr/ATCG/TAGC/; # 序列互补

print OUT ">$id\n",$_,"\n"; # 输出结果到输出文件

}

$/="\n";# 把输入记录分隔符改为默认值

close IN; # 关闭输入文件句柄

close OUT;# 关闭输出文件句柄

四、列表信息整合;

输入列表1:序列长度文件

相关文档
最新文档