Скаляр найден там, где ожидается оператор на <script> - PullRequest
2 голосов
/ 11 августа 2011
use Moose;

extends 'TEST::Role';

has 'name' => (
    is => 'ro',
    isa => 'Str',
    default => 'me',
);

Это работает в Perl 5.8.5, но не в 5.8.8.

Как это решить?

String found where operator expected at B.PM line 4, near "extends 'TEST::Role'"
        (Do you need to predeclare extends?)

Ответы [ 3 ]

5 голосов
/ 11 августа 2011

Если вы можете получить это в неудачном тесте и опубликовать его либо в списке рассылки Moose, либо в #moose на irc.perl.org, я уверен, что кто-то может помочь разобраться в происходящем.

Пожалуйста, обязательно включите весь код, здесь отсутствует описание вашего пакета (и в качестве первого совета я бы не назвал свой пакет B, потому что он сталкивается с базовым пакетом).

4 голосов
/ 11 августа 2011

Это произойдет, если не будет функции с именем extends.Возможно, у вас установлен старый или сломанный Moose?Возможно, в строке перед use Moose; отсутствует точка с запятой?

Кстати, имя вашего файла должно быть .pm, а не .PM.

1 голос
/ 19 января 2014

Вам нужно поставить «пакет ххх»; строка перед "использовать лося;" Это сработало для меня.

...