linux - MooseX::Getopt 将未处理的 token 放在哪里

标签 linux perl moose getopt-long

我有这个片段

package AppOpt;
use Moose;

use namespace::autoclean;

with 'MooseX::Getopt';

has opt1  => (is => 'ro', isa => 'Str', required => 1);
has opt2  => (is => 'ro', isa => 'Bool', required => 1);

__PACKAGE__->meta->make_immutable;
1;

package main;
use strict;
use Data::Dumper;

my $cl = [qw( --opt1 OP1 --opt2 -- xxx yyy zzz)];
my $left = [];

my $opt = AppOpt->new_with_options( argv=>$cl, extra_argv => $left);

print Dumper(opt1 => $opt->opt1, opt2 => $opt->opt2, left => $left, cl => $cl);

这给了我这个

$VAR1 = 'opt1';
$VAR2 = 'OP1';
$VAR3 = 'opt2';
$VAR4 = 1;
$VAR5 = 'left';
$VAR6 = [];
$VAR7 = 'cl';
$VAR8 = [
          '--opt1',
          'OP1',
          '--opt2',
          '--',
          'xxx',
          'yyy',
          'zzz'
        ];

如何在不重新处理数组的情况下获取未处理的非基于选项的项,例如 xxx、yyy、zzz?

最佳答案

不需要为 extra_argv 分配一个 arrayref。额外的参数将自动分配给那里的 arrayref。

use Data::Dumper;

my $opt = AppOpt->new_with_options(
    argv => [qw( --opt1 OP1 --opt2 -- xxx yyy zzz)]
);

print Dumper $opt->extra_argv;

关于linux - MooseX::Getopt 将未处理的 token 放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21037525/

相关文章:

linux - 读取/写入特定内存地址(非常简单的内存测试)-> 段错误

python - 在 Linux Mint 上安装 pyttsx3

perl - HTML::StripScripts 是否仍然可以安全地删除现代漏洞?

perl - 如何在 Perl 中计算一堆数字流的中值和标准差?

perl - Moose - 导入的函数不算作角色方法?

perl - 在作为另一个对象的访问器的对象列表中搜索

linux - useradd 加密密码

linux - 在 shell 字符串变量中键入反引号

perl - 是否可以在 Perl 中使用 Config::General 读取 __DATA__?

perl - 如何防止无限递归(使用 Moose)?