如何在不解析它​​们的情况下将传递的标志/参数转换为我的Perl程序?

时间:2010-07-31 07:55:43

标签: perl parsing arguments

我想传递perl程序一组参数和标志,例如my_script.pl --flag1 --arg1=value --flag2 …

有没有办法快速将所有这些转换为某种标准结构(哈希)而不是解析?

谢谢, 戴夫

2 个答案:

答案 0 :(得分:8)

您应该使用Getopt::Long

样品:

linux-t77m:/home/vinko # more opt.pl
use Getopt::Long;    
my $arg1 = 'default_value';
GetOptions('flag1' => \$flag1, 'arg1=s' => \$arg1, 'flag2' => \$flag2);    
print "FLAG1: ".$flag1." ARG1: ".$arg1." FLAG2: ".$flag2."\n\n";

linux-t77m:/home/vinko # perl opt.pl --flag2 --arg1=stack
FLAG1:  ARG1: stack FLAG2: 1

linux-t77m:/home/vinko # perl opt.pl --flag1 --flag2
FLAG1: 1 ARG1: default_value  FLAG2: 1

答案 1 :(得分:1)

GetOptions也可以填写问题中请求的哈希值。

my %opt;
GetOptions(\%opt, qw(flag1 arg1=s flag2)) or pod2usage(2);