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?

¿Fue útil?

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
scroll top