博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
perl 参数传递
阅读量:4155 次
发布时间:2019-05-25

本文共 2833 字,大约阅读时间需要 9 分钟。



Getopt::Std模块的使用:


初始设置:  


在程序中加入如下代码:

use Getopt::Std;

use vars qw($opt_d $opt_f $opt_p);

getopts('d:f:p');

(注意上两行的参数要对应)


[ 解释一下"d:f:p",d和f后有冒号,表示-d,-f后面要跟参数。p后面没有冒号,表示-p后面不带参数。

而且-d,-f后所跟的参数分别赋给变量$opt_d和$opt_f。对于变量$opt_p,若命令行加了-p,则$opt_p=1,否则为0]


举个例子就很清楚了:

vi file.pl


添加如下代码:

use Getopt::Std;

use vars qw($opt_d $opt_f $opt_p);

getopts('d:f:p');


print "\$opt_d =>; $opt_d\n" if $opt_d;

print "\$opt_f =>; $opt_f\n" if $opt_f;

print "\$opt_p =>; $opt_p\n" if $opt_p;


然后在命令行中运行: 

perl file.pl -d 20040412 -f louiskoochen -p


可得到下列形式的输出:

$opt_d =>;200040412

$opt_f =>;louiskoochen

$opt_p =>;1


这回大家知道Getopt::Std模块是怎么回事了吧:)


处理命令行选项是一个很重复的事情,Getopt::Long 把这个过程简单化了。使用这个模块其实只要知道一些常用的用法就行了。

这是文档中的例子:

use Getopt::Long;   my $data   = "file.dat";   my $length = 24;   my $verbose;   $result = GetOptions ("length=i" => \$length,    # numeric                         "file=s"   => \$data,      # string                         "verbose"  => \$verbose);  # flag

观察一下 GetOptions 函数的参数,可以发现,大致可以把设置分为三个部分: (1)命令行的选项,对应于“length”,“file”,”verbose”,这样在命令行就可以用 -length 或者 —length 甚至 -l(必须是唯一的) 触发选项了。可以通过使用“|”来设置别名。(2)选项类型,后面接有=的字符串要求接字符串(s)、 整数(i),或者浮点(f)等类型的自变量。后面接有:的选项会接受缺省为0或者为空字符串的可选自变量。(3)选项设置的变量。

对于不传递参数的选项,也就是一些开关类型,可以在第一部分后接“!”,这表示该选项不接收自变量,但是可以通过在前面加上no变成负的(例 如,“more”选项的-nomore)。如果不是用“!”,而是“+”,这表示它会在每次出现的时候增加一个变量。如果选项出现在命令行里,那么相关的 变量被设置为1;如果负的选项出现了,那么相关的变量就被设置为0。

下面的例子来自 

use Getopt::Long; # declare default values for variables $verbose = 0; $all = 0; $more = -1;    # so we can detect both -more and -nomore $diam = 3.1415; @libs = (); %flags = (); $debug = -1;   # test for -debug with no argument (0) # process options from command line # verbose will be incremented each time it appears # either all, everything or universe will set $all to 1 # more can be negated (-nomore) # diameter expects a floating point argument # lib expects a string and can be repeated (pushing onto @libs) # flag expects a key=value pair and can be repeated # debug will optionally accept an integer (or 0 by default) GetOptions('verbose+' => \$verbose,         'all|everything|universe' => \$all,         'more!' => \$more,         'diameter=f' => \$diam,         'lib=s' => \@libs,         'flag=s' => \%flags,         'debug:i' => \$debug); # display resulting values of variables print <
\$length, # numeric "file=s" => \$data, # string "verbose" => \$verbose); # flag 观察一下 GetOptions 函数的参数,可以发现,大致可以把设置分为三个部分: (1)命令行的选项,对应于“length”,“file”,”verbose”,这样在命令行就可以用 -length 或者 —length 甚至 -l(必须是唯一的) 触发选项了。可以通过使用“|”来设置别名。(2)选项类型,后面接有=的字符串要求接字符串(s)、 整数(i),或者浮点(f)等类型的自变量。后面接有:的选项会接受缺省为0或者为空字符串的可选自变量。(3)选项设置的变量。 对于不传递参数的选项,也就是一些开关类型,可以在第一部分后接“!”,这表示该选项不接收自变量,但是可以通过在前面加上no变成负的(例如,“more”选项的-nomore)。如果不是用“!”,而是“+”,这表示它会在每次出现的时候增加一个变量。如果选项出现在命令行里,那么相关的变量被设置为1;如果负的选项出现了,那么相关的变量就被设置为0。

转载地址:http://xveti.baihongyu.com/

你可能感兴趣的文章
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
《达芬奇的人生密码》观后感
查看>>
基于“分形”编写的交互应用
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
异常 Java学习Day_15
查看>>
Mysql初始化的命令
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>