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 时如何对参数进行分组?

如何获得 Perl 的 Getopt::Long 来判断参数是不是丢失?

Perl学习

在Perl中使用Getopt::Long进行命令行解析

Solve Perl Can't locate getopts.pl

C语言 --- getopt()函数的使用简析