在Perl中使用Getopt::Long模块来接收用户命令行参数

2016-03-24  本文已影响0人  闲居特工

我们在linux常常用到一个程序需要加入参数,现在了解一下 perl 中的有关控制参数的模块 Getopt::Long ,比直接使用 @ARGV 的数组强大多了.我想大家知道在 Linux 中有的参数有二种形式.

•长参数 –help

•短参数 -h

也就是-和–的分别.–表示完整参数.-表示简化参数.在 Perl 的这个模块中也支持这二种方法.

这要介绍的二 Getopt 其实有二个模块,一个叫 Getopt::Long 一个叫 Getopt::Std.下面就只介绍 Getopt::Long 了.因为这个模块更加强大

Getopt::Long 模块

初始化 Perl命令行中所接受的参数,简化了命令行参数的解析.下面看程序的例子

复制代码代码如下:

#!/usr/bin/perl

use strict;

use Getopt::Long;

use Smart::Comments;

my @libs = ();

my %flags = ();

my ( $verbose, $all, $more, $diam, $debug, $test, $step);

GetOptions(

'verbose+' => \$verbose,

'more!' => \$more,

'debug:i' => \$debug,

'lib=s' => \@libs,

'flag=s' => \%flags,

'test|t' => \$test,

'all|everything|universe' => $all,

);

### $verbose

### $more

### $debug

### $test

### @libs;

### %flags

这就是使用的方法,下面是详细解释,注意看 GetOptions 中的 => 前面的部分.下面是详解

•‘verbose+' 接有 + 的选项不接收变量,后面不需要加内容.直接使用就行了,会在每次出现时增加一次变量,就是讲命行时在参数中 -verbose -verbose 出现二次时 verbose 的值就会变成 2.

•‘more!' 接有 ! 的选项不接收变量(也就是讲后面不需要加参数 –more 来使用就行了),只要命令行中出现了这个参数,就会默认是 1 ,是用来设置打开和关掉一个功能的>.可以在参数前加 no 变成负的例如-nomore.

•‘flag=s' 接有 = 的字符串要求接参数值;字符串(s)、整数(i),或者浮点(f)等类型的变量.

•‘debug:i' 接有 : 的选项会不一定接参数值;

•‘test|t' 接有 | 的选项表示可以给 –test 简写为 -t.

•‘lib=s' => @libs 如果相关联的变量是个数组, 如这个地方的 @libs, 那么选项可以多次出现, 值可以被推到数组里.

•‘flag=s' => %flags 如果相关联的变量是个散列, 那么就要求一个键=值(key=value)对, 并被插入到散列里.

上一篇下一篇

猜你喜欢

热点阅读