写一个Perl包来负责流程调用软件
来源:互联网 发布:谈谈你对数据库的认识 编辑:程序博客网 时间:2024/04/30 16:20
Perl流程中会涉及到很多软件的调用,如果直接把软件的路径写到主程序中,可以执行(my$blastall="/opt/blc/genome/bin/blastall"; );但是碰到复杂的流程时,其中的软件调用很多时,我们一个个写软件的路径也是可以执行的,但是如果软件的路径不存在了,或者软件更新了,那么麻烦就来了,要重头到尾找软件的路径并修改;
现在有一个解决方法,就是将软件的路径写入到一个文件config.txt中,我们只需要在主程序中调用这个文件即可;如何实现呢?就涉及到Perl包的应用;
### software path ####
formatdb=/opt/blc/genome/bin/formatdb
blastall=/opt/blc/genome/bin/blastall
muscle=/opt/blc/genome/bin/muscle
package Soft;
use strict;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(parse_config);
##parse the software.config file, and check the existence of each software
################################################
sub parse_config{
my ($config,$soft)=@_;
open IN,$config || die;
my %ha;
while(<IN>){
chomp;
next if /^#|^$/;
s/\s+//g;
my @p=split/=/,$_;
$ha{$p[0]}=$p[1];
}
close IN;
if(exists $ha{$soft}){
if(-e $ha{$soft}){
return $ha{$soft};
}else{
die "\nConfig Error: $soft wrong path in $config\n";
}
}else{
die "\nConfig Error: $soft not set in $config\n";
}
}
1;
那么怎么用这个package呢?
可以像正常的module调用那样,use module;
示例如下:
[plain] view plain copy
#! /usr/bin/perl -w
use strict;
use FindBin qw($Bin $Script);
use lib $Bin;
use Soft;
......
......
my $config="$Bin/config.txt";
my $blastall=parse_config($config,"blastall");
......
这样在流程中,看起来似乎多了许多行,但是这个package可以在不同的流程中反复调用,你只需要做好两件事情:
1,把Soft.pm 放到一个适当的位置,如果是调用流程的相对路径,就要用FindBin 模块,如果直接是一个固定的路径,可以这么写:
[plain] view plain copy
#! /usr/bin/perl -w
use strict;
use lib 'home/lxf/';
use Soft;
......
......
my $config="home/lxf/config.txt";
my $blastall=parse_config($config,"blastall");
......
转载自http://blog.csdn.net/hugolee123/article/details/38647011#
- 写一个Perl包来负责流程调用软件
- 用一个简单的perl包轻松管理脚本中的软件调用
- 学习perl写的一个
- perl写的一个端口扫描
- 技术,谁来负责?
- 写一个来开张。。。。。
- 软件质量问题谁负责
- nodejs如何调用动态链接库(dll)呢?写一个addon来处理,写此文抛砖引玉。
- perl 调用自己写的pm
- 收包函数调用流程
- 谁来负责工具方法和静态方法的参数验证,调用者还是被调着?
- 用perl写的一个网络爬虫
- Golang1.7闲来无事写了一个基于Gob的tcp通讯用的包
- 闲来无事,写一个“避孕、受孕”软件,造福伟大的中华人们计划生育事业,嘿嘿!!
- 写一个struts的流程
- 最近写的一个MySQL操作类(含调用方法),发上来与大家共享
- 用VS2005写一个 C 的类库和用 C#来调用的示例
- 写了一个自动搜索特征码来定位地址的DLL,附带VB调用源代码
- Struts2(一)
- 地下市场金融牌照疯狂买卖:全牌照可以卖十几个亿
- RSA加密时OSStatus状态-34018
- java--认识
- 桥基站设备通信协议-AIS
- 写一个Perl包来负责流程调用软件
- 彻底解决maven下载慢的问题
- elasticsearch三个重要的优化
- openMP之二parallel Construct
- hibernate 执行sql ,select 返回string long
- Android中使用MediaCodec硬件解码,高效率得到YUV格式帧,快速保存JPEG图片(不使用OpenGL)(附Demo)
- 钽电容和铝电解电容的区别
- C语言实现:查找一个整数中1的个数
- Java 8系列之Stream的强大工具Collector