6

来自FMC的更新

我在这个问题上悬赏,因为我对同样的问题感到困惑。换个说法,您如何实现应用程序级选项(适用于整个程序的选项script.pl),而不是那些应用于单个命令的选项(search在本例中)。

原来的问题

如何使用App::Cmd创建这样的界面

script.pl --config <file> search --options args

?

我可以:

./script.pl search --options args
./script.pl search args
./script.pl search --options

我想要实现的是为配置文件提供一个选项,如下所示:

./script.pl --config file.conf search --options args

我已经查看了 cpan 上的App::Cmd::Tutorial但到目前为止我还没有任何运气让它工作。

4

1 回答 1

6

您可以在App::Cmd中指定全局选项,如下所示。我们需要三个文件:

脚本.pl

use Tool;
Tool->run;

工具.pm

package Tool;
use strict; use warnings;
use base 'App::Cmd';

sub global_opt_spec {
    ['config=s' => "Specify configuration file"];
}

1;

工具/命令/search.pm

package Tool::Command::search;
use strict; use warnings;
use base 'App::Cmd::Command';

sub opt_spec {
    ["option" => "switch on something"],
}

sub execute {
    my ($self, $opt, $args) = @_;

    warn "Running some action\n";
    warn 'Config file = ' . $self->app->global_options->{config}, "\n";
    warn 'Option      = ' . $opt->{option}, "\n";
}

1;

该示例显示了如何定义全局选项并从search操作中访问它。

于 2011-05-26T08:56:04.343 回答