perl 参数传递
来源:互联网 发布:育知同创官网 编辑:程序博客网 时间:2024/06/06 06:37
http://hi.baidu.com/rootme/blog/item/352738385690aff93b87cef5.html
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。
下面的例子来自 http://www.zdnet.com.cn/developer/code/story/0,3800066897,39190451,00.htm
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 <<EOS;
Verbose: $verbose
All: $all
More: $more
Diameter: $diam
Debug: $debug
Libs: @{[ join ', ', @libs ]}
Flags: @{[ join "\n\t\t", map { "处理命令行选项是一个很重复的事情,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。
- Perl子函数参数传递
- perl 参数传递
- perl 参数传递
- perl 子程序传递参数
- Perl脚本间传递参数
- Perl脚本间传递参数
- perl文件句柄参数传递
- perl 传递数组作为参数
- perl子例程参数传递方式初探
- perl 子程序传递参数不同类型变量 设置
- perl基础:传递hash类型参数
- perl语言中传递数组参数
- Perl脚本间传递参数 (二)
- perl 用参数传递URL地址进行HTML解析
- Perl函数参数中传递数组和引用的使用
- Perl函数参数中传递数组和引用的使用
- perl子例程参数传递方式之二:数组作参数
- perl 函数参数中传递数组和引用的一些问题
- 小数问题
- struts2 ognl访问静态方法一定要配置!!!否则不能访问
- HDU What Are You Talking About
- gdb调试android
- 数据库镜像简介
- perl 参数传递
- ios 字符转换
- MP3文件格式分析
- spring 文件上传原理 (在非spring环境中可以使用)
- fstat、stat和lstat 区别
- 正则表达式语法
- SQL Server 2005 镜像构建手册
- 用批处理文件双击直接打开class文件
- 我的“路”