Perl语言getoptions函数的应用
Posted 生信人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl语言getoptions函数的应用相关的知识,希望对你有一定的参考价值。
Perl语言getoptions函数的应用
我们在linux常常用到一个程序需要加入参数,现在了解一下perl中的有关控制参数的函数.getoptions .在linux有的参数有二种形式.一种是–help,另一种是-h.也就是-和–的分别.–表示完整参数.-表示简化参数.
数据参数分为三种类型
1 不传入参数,但是参数可以定义多个
“step+”=>\$step
这个step是用来分步控制程序的,如果程序内部分为三步,那么就可以利用-step 来控制程序从哪一步开始运行。比如-step -step 连写两个,那么$step 的值就是2 ,那么可以控制从第二步开始运行。
2 不传入参数,只作为开关使用
“on!”=>\$on
这个参数就是一个判断的开关,默认$on 为1 ,我们可以通过-noon(加上no)来控制$on,此时$on值就为0啦。这个开关函数通常可以在程序中控制是否选择做哪一步。
3 传入参数
'number:i' => \$number);
'number:s' => \$number);
'number:f' => \$number);
参入参数的类型分为三种,s:字符串,f:浮点型,i:整型。
对于是否必须有参数传入也分为两种:
‘=’表示此参数一定要有参数值, 若改用’:'代替表示参数不一定要有参数值
对数组和哈希参入参数如下:
"library=s" => \@libfiles 或者"library=s@" => \$libfiles
参考模板:
#!/usr/bin/perl -w
use strict;
use warnings;
use Getopt::Long;
use Data::Dumper;
use FindBin qw($Bin $Script);
use File::Basename qw(basename dirname);
my $BEGIN_TIME=time();
my $version="1.0.0";
#######################################################################################
# ------------------------------------------------------------------
# GetOptions
# ------------------------------------------------------------------
my ($fIn,$fkey,$outdir);
GetOptions(
"help|?" =>\&USAGE,
"i:s"=>\$fIn,
"k:s"=>\$fkey,
"od:s"=>\$outdir,
) or &USAGE;
&USAGE unless ($fIn and $fkey);
$outdir||="./";
`mkdir $outdir`unless (-d $outdir);
$outdir=AbsolutePath("dir",$outdir);
############################键入程序###################################################
#######################################################################################
print STDOUT "\nDone. Total elapsed time : ",time()-$BEGIN_TIME,"s\n";
#######################################################################################
# ------------------------------------------------------------------
# sub function
# ------------------------------------------------------------------
sub AbsolutePath
{#获取指定目录或文件的决定路径
my ($type,$input) = @_;
my $return;
$/="\n";
if ($type eq 'dir')
{
my $pwd = `pwd`;
chomp $pwd;
chdir($input);
$return = `pwd`;
chomp $return;
chdir($pwd);
}
elsif($type eq 'file')
{
my $pwd = `pwd`;
chomp $pwd;
my $dir=dirname($input);
my $file=basename($input);
chdir($dir);
$return = `pwd`;
chomp $return;
$return .="\/".$file;
chdir($pwd);
}
return $return;
}
sub GetTime {
my ($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst)=localtime(time());
return sprintf("%4d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $day, $hour, $min, $sec);
}
sub USAGE {#
my $usage=<<"USAGE";
Program:
Version: $version
Contact:
Usage:
Options:
-i <file> Input file, forced
-k <str> Key of output file, forced
-od <dir> Dir of output file, default ./
-h Help
USAGE
print $usage;
exit;
}
如果你喜欢我们,就动动手指关注一下吧!
以上是关于Perl语言getoptions函数的应用的主要内容,如果未能解决你的问题,请参考以下文章
如何获得 Perl 的 Getopt::Long 来判断参数是不是丢失?