Perl脚本------stat.pl(统计fasta文件序列长度)
相比Perl语言,现在python用的多。但是perl依旧是生信学习的一门课程,还是有人在写,所以你至少要会读。
perl
#!/use/bin/perl #perl解析器
$inputFile = $ARGV[0]; #输入文件:fasta
$outputDir = $ARGV[1]; #输出目录
if (@ARGV<2) {
print "inputfile and outputdir are required!\n";
exit 1;
}
open(DATA,"$inputFile") or die("Could not open file!!!");
#获取fasta文件名
@input = split(/\//,$inputFile); @fastaname = split(/\./,$input[-1]);
#生成输出文件名
$outputFile = join ("/", $outputDir, join("_", $fastaname[0], "length.txt"));
open(RESULT,">$outputFile");
my%hash,$read;
foreach $line (<DATA>) {
chomp($line);
if($line =~ /^>/){ #判断是序列名称行
$read = $line;
$hash{$read} = 0;
}else{
$hash{$read} += length($line);
}
}
my$Total_read = 0,$Total_length = 0;
foreach $k(keys %hash){
$Total_length = $Total_length+$hash{$k};
$Total_read = $Total_read+1;
}
print "Total_read:\t$Total_read\nTotal_length:\t$Total_length\n";
print RESULT "Total_read:\t$Total_read\nTotal_length:\t$Total_length\n";
close(DATA);close(RESULT);
上面是我经常书写的perl文件的格式,当然有些不标准,仅供参阅。
perl执行问题总结
问题一
Can't locate Cegma.pm in @INC (you may need to install the Cegma module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at ./cegma line 34.
这是perl模块没有在系统配置中,用perl -V查看。如果是下载的软件,这个文件会在lib/目录下,配置环境变量即可
对于perl模块问题,另一篇博文https://blog.csdn.net/weixin_44616693/article/details/125160834,可以查看
- List item