Является ли это правильным (предполагаемым) использованием MooseX :: Getopt ?В документации не так много примеров.Код работает, но я не знаю, была ли это предполагаемая модель использования.
package AppOpt {
use Moose;
use Moose::Util::TypeConstraints;
use namespace::autoclean;
with 'MooseX::Getopt';
enum 'ReportType', [qw( activityByEvent activityByDate final )];
enum 'FormatType', [qw( text pretty html )];
has report => ( is => 'ro', isa => 'Str', required => 1 );
has verbose => ( is => 'ro', isa => 'Bool', default => 0 );
has format => ( is => 'ro', isa => 'Str', default => "text" );
__PACKAGE__->meta->make_immutable;
}
package main;
use strict;
use warnings;
my $opt = AppOpt->new_with_options();
printf("original \@ARGV = [%s]\n\n", join(' ', @ARGV));
# Please ignore this tasteless inspection of the object guts. -E
for my $k (keys(%{$opt})) {
unless($k =~ /(usage|ARGV|extra_argv)/) {
printf("%s => %s\n", $k, $$opt{$k});
}
}
exit(0);
В частности: предназначены ли опции для их собственного класса?Я не могу быть уверен из документов.
Кроме того, было бы целесообразно использовать BUILD
для дальнейшей проверки параметров?
Это может звучать больше, чем один вопрос, но яне имею в виду это быть.Я уже работал с другими модулями и обнаружил, что неправильно понял, как они были предназначены для использования.