[Perl] 利用Geopt::Long模块接收命令行参数

当perl程序需要处理用户输入的参数时,有两种方式:

第一种方法是:使用@ARGV数组

第二种方法是:调用Getopt::Long模块,该方法方便而强大。本文主要介绍该方法。

Getopt::Long 在Perl中的调用实例:

#!/usr/bin/perl
use Getopt::Long;
my ($verbose, $monitor, $debug, $test);my @libs = ();my %flags = ();
GetOptions (   ‘verbose+‘ => \$verbose,   ‘monitor!‘   => \$monitor,   ‘debug:i‘    => \$debug,   ‘test|t=s‘   => \$test,   ‘lib=s‘      => \[email protected],    ‘flag=s‘     => \%flags, );

print "verbose=$verbose, monitor=$monitor, debug=$debug, test=$test, [email protected]\n";while (my($k, $v)=each%flags) {  print "$k=>$v\n";}

代码解释:

1. ‘verbose+’ :“+”表示不需要在该选项后跟参数,每使用一次该选项会verbose变量自动加1.

如:在命令行中出现 -verbose -verbose 2次,verbose的值变为2.

2. ‘monitor!’ : “!”表示该选项不需要后跟参数,直接使用即可(-monitor)。此时more的默认值为1.

常用于设置打开和关闭一个功能,-monitor表示打开,-nomonitor表示关闭。

3. ‘debug:i’ : “:”表示该选项后跟的参数可以是0或空字符

4. ‘test|t=s’ : "|" 表示该选项可以简写,如-test可以简写为-t

“=” 表示该选项必须跟参数

5. ‘lib=s’ => \@libs : 如果libs为数组变量,该选项可以出现多次,期值被存入数组。

6.  ‘flag=s’ : “=”表示该选项后跟字符串(s),整数(i)或浮点数(f)等类型的参数。

7. ‘flag=s’ => \%flags: 如果flags为散列,该选项的参数要求一个键值对(key=value),其值存放到散列中。

说明:参数匹配时,忽略大小写;其选项可以使用简写形式(唯一最短字符串,如首字母:-m表示 -more)

Getopt程序执行方法:

假设上述代码保存在test.pl文件中,chmod +x test.pl。

$./test.pl --verbose --verbose -v --monitor --lib=‘/lib‘ -l ‘/lib64‘ --f a=1 --flag b=2  --debug 2 -t random

执行上述代码,可以得到如下结果:

verbose=3, monitor=1, debug=2, test=random, libs=/lib /lib64
a=>1
b=>2

Getopt::Long模块传递参数:

1. 参数类型:s为字符串,i为整数,f为浮点数

2. 变量类型:$为普通变量,@为数组,%为哈希

时间: 2024-11-05 02:19:53

[Perl] 利用Geopt::Long模块接收命令行参数的相关文章

C#_WinForm接收命令行参数

C#_WinForm接收命令行参数 2014-08-03 10:17 534人阅读 评论(0) 收藏 举报 首先,我要仔细的声明下,本文讲的是接受命令行参数,让程序启动.而不是启动那个黑黑的框...我要实现的效果和它么有关系 网上那些千篇一律,只管Ctrl+C,Ctrl+V,采集来的文章,本人已经深受其害,浪费了不少时间!BS~~ 先看下这篇文章:Winform程序接收命令行参数.一看标题,恩…和我的想法一样,不过一看内容,大为失望.不过呢,这里既然出现了2个API函数,先测试下,收藏着. //

让browserify接收命令行参数,在打包时parse yml配置文件

功能需求: 1用browserify把各种js打包成浏览器端的1个bundle.js,含有yml配置文件 约束: 1 yml配置文件不在当前工程里(现在还不知道放哪里,以后也会变),希望在打包时,用命令行参数的方式传入一个路径,形如 --config=D:/dev/kiev1941/overlay.yml 2这个配置文件在client.js开头会require(),所以要打包进bundle.js 开始的破题思路是: 1 如何让browserify  cli 接收argv,解析yml文件地址 2

Python3-argparse模块-解析命令行参数

官方文档 http://python.usyiyi.cn/translate/python_352/library/argparse.html 代码示例 import argparse # 1.获取参数解析对象 parser = argparse.ArgumentParser(description="帮助信息前的一些描述信息,可以不写哦") # 2.添加可解析的参数 # add_argument()函数常用参数 # name or flags 选项字符串的名字或列表,例如foo或者

MFC Dialog程序如何接收命令行参数

在MFC程序中,可以用以下几种方法来获取命令行参数. 为方便说明,我们假设执行了命令:C:\test\app.exe -1 -2 方法一 : 使用API ::GetCommandLine()获取应用程序名称及参数列表 在OninitDialog()中添加代码 CString sCmdline = ::GetCommandLine(); AfxMessageBox(sCmdline); 将获取到 "C:\test\app.exe  -1 -2 " 方法二 :  在OnInitDialog

shell脚本接收命令行参数

cd ~ && mkdir $1 && cd $1 && touch $2 && cvc-add --ticket $1 --module mfgpro_cust $2 && cvc-ci --ticket $1 --message 'ci' && cvc-report --promote-avail test $0是第一个参数,$1是第二个,以此类推 sh tmp.sh T-12 test12.p tmp.s

Python 命令行参数和getopt模块详解

1.需求来源 有时候我们需要写一些脚本处理一些任务,可能根据不同的条件输入不同的命令,来完成不同的任务.能不能做到跟linux操作系统一样,看着更高大上一点呢? 答案当然是可以的啦!getopt能满足你的需求 先看个linux 中的系统命令吧:最终目的就是写出类似的脚本. 2.getopt介绍 getopt这个函数 就是用来抽取 sys.argv 获得的用户输入来确定执行步骤. getopt是个模块,而这个模块里面又有getopt 函数,所以getopt需要这样这样用. getopt.getop

【Python 命令行参数解析: optparse 模块】

大家在使用Python进行脚本开发时,经常需要通过终端交互的方式对Python的脚本模块进行调用.这时在 Python模块中提供基础的命令行参数支持是必不可少的.那么,在Python中我们如何实现命令行参数的传入和解析呢,如下内容将对此进行简要的介绍. Python对命令行参数解析的支持 Python中通过两个内建模块对命令行参数解析进行支持:getopt 和 optparse 两种内置支持 模块名 功能说明 getopt 对命令行参数进行简单的处理 optparse 能够对命令行参数进行复杂的

第52课 命令行参数的应用

1.主窗口的状态参数 (1)主窗口的状态参数:如位置.大小 (2)应用程序退出的过程 ①收到关闭事件 ②执行关闭事件处理函数(在这里进行主窗口的状态保存) ③主窗口从屏幕上消失 ④主窗口的析构函数的执行 (3)保存主窗口状态参数的时机 ①一般而言:应用程序收到关闭事件时进行状态参数的保存 ②Qt的解决方案:重写关闭事件处理函数并在其中保存状态参数 2. 命令行参数的应用 (1)每个应用程序都能够接收命令行参数. (2)命令行参数传递到应用程序 ①传统方式:在命令行启动GUI程序时传递参数,如no

python 文件处理 -- 02 文件属性&标准输入输出&命令行参数&文件编码

1文件属性 file.fileno()--文件描述符 file.mode--文件当前打开的权限 file.encoding--文件编码格式(无输出表明为ASCII码) file.closed--文件是否被关闭 >>> f.fileno() 3 >>> f.mode 'r+' >>> f.encoding >>> f.closed False >>> filter(lambda s:s[:2]!='__',dir(f)