Я новичок в Музе.До сегодняшнего дня наши среды работали на Perl 5.8.2, который не поддерживал Moose.
Я работаю над некоторыми примерами и думал, что настройка «required => 1» для атрибута будет полезнаОднако, когда я пытаюсь использовать эту опцию, возвращаемое сообщение об ошибке в действительности не используется.
Вот пример:
cat.pl:
#!/usr/bin/perl
{
package Cat;
use Moose;
use Modern::Perl;
has 'name' => (
is => 'ro',
required => 1,
);
sub meow {
my $self = shift;
say 'Meow!';
}
}
use Modern::Perl;
my $alarm = Cat->new();
$alarm->meow();
$alarm->meow();
$alarm->meow();
КогдаЯ запускаю его:
Attribute (name) is required at /app/perl5/perl-5.10.1/lib/site_perl/5.10.1/aix-thread-multi-64all/Class/MOP/Class.pm line 581
Class::MOP::Class::_construct_instance('Moose::Meta::Class=HASH(0x110ac1a00)', 'HASH(0x110c3b3c0)') called at /app/perl5/perl-5.10.1/lib/site_perl/5.10.1/aix-thread-multi-64all/Class/MOP/Class.pm line 554
Class::MOP::Class::new_object('Moose::Meta::Class=HASH(0x110ac1a00)', 'HASH(0x110c3b3c0)') called at /app/perl5/perl-5.10.1/lib/site_perl/5.10.1/aix-thread-multi-64all/Moose/Meta/Class.pm line 258
Moose::Meta::Class::new_object('Moose::Meta::Class=HASH(0x110ac1a00)', 'HASH(0x110c3b3c0)') called at /app/perl5/perl-5.10.1/lib/site_perl/5.10.1/aix-thread-multi-64all/Moose/Object.pm line 28
Moose::Object::new('Cat') called at cat.pl line 20
Если один из наших не-perl-операторов увидит подобное сообщение об ошибке, они, вероятно, сойдут с ума.Боюсь, они не поймут, что все 5 строк в сообщении об ошибке на самом деле являются частью одной и той же ошибки.
Есть ли способ получить хорошее сообщение об ошибке, если не указан обязательный атрибут?
Что-то вроде хрипоты, я могу представить себе следующее сообщение:
Attribute (name) is required at cat.pl line 20
Опять же, я новичок в Moose, так что это может быть простой настройкой, которую мне не хватает.1021 * Заранее спасибо!