أين يضع MooseX::Getopt الرموز المميزة غير المعالجة؟
-
21-12-2019 - |
سؤال
لدي هذه القطعة
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 دون الحاجة إلى إعادة معالجة المصفوفة؟
المحلول
ليست هناك حاجة لتعيين 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;
لا تنتمي إلى StackOverflow