Frage

Ich habe dieses Fragment

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);

Was mir das gibt

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

Wie kann ich die unverarbeiteten, nicht optionsbasierten Elemente wie xxx, yyy, zzz abrufen, ohne das Array erneut verarbeiten zu müssen?

War es hilfreich?

Lösung

Es ist nicht erforderlich, ein arrayref zuzuweisen extra_argv.Die zusätzlichen Argumente werden dort automatisch einem arrayref zugewiesen.

use Data::Dumper;

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

print Dumper $opt->extra_argv;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top