美文网首页
在Perl中使用Getopt::Long模块来接收用户命令行参数

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

作者: 闲居特工 | 来源:发表于2016-03-24 16:18 被阅读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)对, 并被插入到散列里.

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ckurlttx.html