4

有许多 Perl 教程解释了如何使用 GetOptions 实用程序仅处理预期的命令行参数,否则退出并显示适当的消息。

在我的要求中,我有以下可选的命令行参数,例如,

  • -z zip_dir_path :压缩输出
  • -h:显示帮助。

我尝试了一些对我不起作用的 GetOptions 组合。
所以我的问题是:如何使用 GetOptions 来处理这个要求?

编辑:-z 需要'zip 目录路径'

EDIT2:我的脚本具有以下强制性命令行参数:

  • -in input_dir_path : 输入目录
  • -out output_dir_path :输出目录

这是我的代码:

my %args;
GetOptions(\%args,
"in=s",
"out=s"
) or die &usage();

die "Missing -in!" unless $args{in};
die "Missing -out!" unless $args{out};

希望这个编辑增加更多的清晰度。

4

3 回答 3

9

A :(冒号)可用于表示可选选项:

#!/usr/bin/env perl

use strict;
use warnings;

use Getopt::Long;

my ( $zip, $help, $input_dir, $output_dir );

GetOptions(
    'z:s'   => \$zip,
    'h'     => \$help,
    'in=s'  => \$input_dir,
    'out=s' => \$output_dir,
);
于 2011-07-02T07:49:00.823 回答
4

从文档中:

   : type [ desttype ]
       Like "=", but designates the argument as optional.  If omitted, an
       empty string will be assigned to string values options, and the
       value zero to numeric options.

如果您指定它并检查空字符串,您就会知道用户没有指定哪些字符串。

于 2011-07-02T14:45:36.847 回答
2

这应该设置为1或基于您在命令行中获得的输入参数的0值。$zip_output$show_help

use strict;
use warnings;

use Getopt::Long;

my $zip_output;
my $show_help;

GetOptions("z" => \$zip, "h" => \$show_help);
于 2011-07-02T07:30:54.097 回答