gpt4 book ai didi

perl - 如何使用 getopt 子类化 Minion 命令?

转载 作者:行者123 更新时间:2023-12-01 14:59:31 25 4
gpt4 key购买 nike

Minion 中的任务之一我正在使用的作业队列需要用户和密码。

我找到了关于如何将参数传递给 Mojo 应用程序的很好的描述 here所以我是这样处理的:

package Minion::Command::minion::secure_worker;

use Mojo::Base 'Minion::Command::minion::worker';
use Mojo::Util 'getopt';

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

my $worker = $self->app->minion->worker;
my $status = $worker->status;

getopt \@args,
'U|username=s' => \my $username,
'P|password=s' => \my $password;

$self->app->credentials->{username} = $username;
$self->app->credentials->{password} = $password;

return $self->SUPER::run;
}

1

但是,当我尝试传递原始工作命令中的选项时 - 例如 -j我得到:
Unknown option: j

这是为什么?看起来子类化命令不起作用,或者 getopt slurps 一切?

最佳答案

调用 getopt不可组合。你可以尝试处理(然后传递)你的父类(super class)处理的所有选项,或者调用 Getopt::Long自己用 pass_through选项。这将忽略所有未知选项:

package Minion::Command::minion::secure_worker;

use Mojo::Base 'Minion::Command::minion::worker';
use Getopt::Long 'GetOptionsFromArray';
use Getopt::Long ':config', 'pass_through';

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

my $worker = $self->app->minion->worker;
my $status = $worker->status;

GetOptionsFromArray \@args,
'U|username=s' => \my $username,
'P|password=s' => \my $password;

$self->app->credentials->{username} = $username;
$self->app->credentials->{password} = $password;

return $self->SUPER::run;
}

1

关于perl - 如何使用 getopt 子类化 Minion 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52603186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com