[Perl] Getopt 函数来接收用户参数的使用

[Perl] Getopt 函数来接收用户参数的使用

 我们在linux常常用到一个程序需要加入参数,现在了解一下perl中的有关控制参数的函数.getopt.在linux有的参数有二种形式.一种是�help,另一种是-h.也就是-和�的分别.�表示完整参数.-表示简化参数.

在perl中也分这二种.

Getopt::Std模块的功能: 初始化perl命令行中所接受的参数,简化了命令行参数的解析。

简化参数例子:

#!/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
"if$opt_a;
print"$opt_b =>; $opt_b
"if$opt_b;
print"$opt_c =>; $opt_c
"if$opt_c;

输出如下:

[root@mail test]# ./getopt.pl -a aa -b bb -c cc

$opt_a =>; aa

$opt_b =>; bb $opt_c =>; cc

完整参数

#!/usr/bin/perl 
use Getopt::Long;
Getopt::Long::GetOptions(
    'page=i'   => $page,
    'onoff!'   => $onoff,
    'help'     => $wants_help,
    'name=s'   => $name,
    'number:i' => $number
);

if ( defined($page) ) {
    print "page flag set to $page 
";
}
if ( defined($onoff) ) {

    print "onoff flag set to $onoff 
";
}

if ( defined($wants_help) ) {

    print "help flag set to $wants_help 
";
}

if ( defined($name) ) {

    print "name flag set to $name 
";
}

if ( defined($number) ) {

    print "number flag set to $number 
";
}

 

./getlong.pl -name AAA
name flag set to AAA

带值参数
※参数类型:整数, 浮点数, 字串

GetOptions( ‘tag=s’ => $tag );
‘=’表示此参数一定要有参数值, 若改用’:’代替表示参数不一定要有参数值
‘s’表示传递字串参数, 若为’i’表传递整数参数, 若为’f’表传递浮点数
example:
test.pl �tag=string
or
test.pl �tag string

多参数值的参数

GetOptions (“library=s” => @libfiles);
参数传到 @tag
or
GetOptions (“library=s@” => $libfiles);
参数传到 @$tag
example:
test.pl �library lib/stdlib �library lib/extlib

参数别名
GetOptions (‘length|height=f’ => $length);
第一个名称为primary name, 其他的名称为alias(可有多个alias名称)
当使用hash参数时, 使用primary name作为key值

参数的简称及大小写
GetOptions (‘length|height=f’ => $length, ”head” => $head);
若没有特别设定, Getopt会忽略参数的大小写, 也就是 -l or -L 指的都
是同一个参数(�length)

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

hash参数值(有名称及参数值)
GetOptions (“define=s” => \%defines);
or
GetOptions (“define=s%” => $defines);
example:
test.pl �define os=linux �define vendor=redhat

 

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>