perl语言——length.pl脚本(统计fasta文件序列长度)

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,可以查看

  1. List item
相关推荐
叼烟扛炮1 小时前
Linux 学习笔记(五十九):epoll 的生死抉择——LT 与 ET 模式
linux·运维·服务器·网络·笔记·学习·php
David猪大卫8 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
叼烟扛炮9 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
Ruiery10 小时前
Linux 6.6内核内存管理深度解析(十五):CMA 连续内存分配器
linux·运维·服务器
xiaoye-duck10 小时前
《C++ 项目:手写大模型接入 SDK》Gemini接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
测试界的小码农10 小时前
【Linux 命令实战(01):认识 Linux 终端,从零掌握第一个命令】
linux·运维·服务器
布裘11 小时前
【银河麒麟】重启后时区丢失?排查发现 localtime 被业务程序替换成硬链接
linux·运维·网络
nice_lcj52012 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
码农小河6613 小时前
基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
java·开发语言·mysql
GeW14 小时前
高端化转型进入“补底层”阶段:Linux与数据库的再定位
linux