Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1177243
  • 博文数量: 312
  • 博客积分: 12522
  • 博客等级: 上将
  • 技术积分: 3376
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-27 18:35
文章分类

全部博文(312)

文章存档

2016年(3)

2015年(1)

2013年(1)

2012年(28)

2011年(101)

2010年(72)

2009年(13)

2008年(93)

分类: IT业界

2011-07-12 14:26:14

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

 

 

示例程序:

1. Getopt::Std

getopt.pl;

#!/usr/bin/perl -w
#use strict;
use Getopt::Std;
use vars qw($opt_a $opt_b $opt_c);
getopts('a:b:c');
print "opt_a =>;$opt_a\n" if $opt_a;
print "opt_b =>;$opt_b\n" if $opt_b;
print "opt_c =>;$opt_c\n" if $opt_c;
 
注释:'a:b:c',a和b后有冒号,表示-a,-b后面要跟参数.c后面没有冒号,表示-c后面不带参数.

而且-a,-b后所跟的参数分别赋给变量$opt_a和$opt_b,对于变量$opt_c,若命令行加了-c,则$opt_c=1,否则为0.

如:

perl getopt.pl -a aa -b bb -c cc

显示:

opt_a =>;aa
opt_b =>;bb
opt_c =>;1

如:

perl getopt.pl -a aa -b bb
opt_a =>;aa
opt_b =>;bb

(因为加了if判断,所以$opt_c没有显示);

上面的例子,用Getopt::Long可以这样实现

 

 

2. Getopt::Long

上面的例子,用Getopt::Long可以这样实现

getoptions.pl

 
#!/usr/bin/perl
use Getopt::Long;
use vars qw($opt_a $opt_b $opt_c);
GetOptions("a=s"=>\$opt_a,"b|opt_b:i"=>\$opt_b,"c"=>\$opt_c);
print "opt_a =>;$opt_a\n" if $opt_a;
print "opt_b =>;$opt_b\n" if $opt_b;
print "opt_c =>;$opt_c\n" if $opt_c;

a=s表示可以用-a aa的形式,即变量-a 类型是字符串
b|opt_b:i表示可以用-b或者-opt_b来取得变量,类型为整型
c表示如果有-c的参数值则$opt_c等于1,否则等于0

其中
s表示字符串,i表整型,f表示浮点型
=表示要有参数值或者没有这个参数如:perl getoptions.pl -a aa -b bb或者perl getoptions.pl -b bb
:表示可有参数值也可以没有参数值
如:
perl getoptions.pl -a aa -b 2 -c cc
opt_a =>;aa
opt_b =>;2
opt_c =>;1
阅读(671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~