Perl语言入门实战习题[试题]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
my ($infile,$outfile) = @ARGV; # 把命令行参数赋值给输入文件和输出文件 open IN,$infile || die"error: can't open infile: $infile"; # 打开输入文件句柄IN open OUT,">$outfile" || die$!; # 打开输出文件句柄OUT $/=">";
while ( my $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
}
my ($infile,$outfile) = @ARGV;# 把命令行参数赋值给输入文件和输出文件open IN,$infile || die"error: can't open infile: $infile";# 打开输入文件句柄IN open OUT,">$outfile" || die$!;# 打开输出文件句柄OUT
$/=">";
(
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
}
my ($infile,$outfile) = @ARGV;# 把命令行参数赋值给输入文件和输出文件open IN,$infile || die"error: can't open infile: $infile";# 打开输入文件句柄IN open OUT,">$outfile" || die$!;# 打开输出文件句柄OUT $/=">";
chomp; # 去掉末尾的”>”
s/^.+?\n//;# 删除第一行
s/\s//g; # 删除序列中的空白字符
$_ = reverse $_; # 序列方向
tr/ATCG/TAGC/; # 序列互补
print OUT ">$id\n",$_,"\n"; # 输出结果到输出文件
}
$/="\n";# 把输入记录分隔符改为默认值
close IN; # 关闭输入文件句柄
close OUT;# 关闭输出文件句柄
四、列表信息整合;
输入列表1:序列长度文件