2014-01-10 47 views
0

我有這樣的片段哪裏MooseX ::的Getopt把未經處理的令牌

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而不必重新處理數組?

回答

0

有沒有必要分配一個arrayref extra_argv。額外的參數將自動分配給arrayref。

use Data::Dumper; 

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

print Dumper $opt->extra_argv;