¿Dónde coloca MooseX::Getopt los tokens sin procesar?
-
21-12-2019 - |
Pregunta
tengo este fragmento
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);
Lo que me da esto
$VAR1 = 'opt1';
$VAR2 = 'OP1';
$VAR3 = 'opt2';
$VAR4 = 1;
$VAR5 = 'left';
$VAR6 = [];
$VAR7 = 'cl';
$VAR8 = [
'--opt1',
'OP1',
'--opt2',
'--',
'xxx',
'yyy',
'zzz'
];
¿Cómo puedo obtener elementos no procesados que no están basados en opciones, como xxx, yyy, zzz, sin tener que reprocesar la matriz?
Solución
No es necesario asignar una referencia de matriz a extra_argv
.Los argumentos adicionales se asignarán automáticamente a un arrayref.
use Data::Dumper;
my $opt = AppOpt->new_with_options(
argv => [qw( --opt1 OP1 --opt2 -- xxx yyy zzz)]
);
print Dumper $opt->extra_argv;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow