На OSX "Mavericks", це:
package FOO;
use Moose;
use MooseX::ClassAttribute;
class_has "BAR" => ( is => "rw" );
... перевірка чистих на perl-c:
Синтаксис FOO.pm ОК
... але дає цю помилку, якщо я запускаю його просто "perl FOO.pm":
Непарне число елементів у хеш-призначенні на/System/Library/Perl/Extras/5.16/MooseX/ClassAttribute.pm рядок 37. Неможливо використати рядок ("файл") як хеш-реф, в той час як "строгі посилання" використовуються на /Library/Perl/5.16/darwin-thread-multi-2level/Moose/Meta/Attribute.pm рядок 71.
Я всіляко намагався зрозуміти, щоПродовжую сюди, але я задираюсь.Чи є щось інше, що я повинен "використовувати" або оголосити спочатку? (Це найменший тест, який я міг придумати, але помилка трапляється кожного разу, коли я використовую class_has () в модулі .)
Відповіді:
1 для відповіді № 1Коли ви отримуєте дивні помилки від модуля, який використовує Moose, перше, що потрібно зробити, це запустити moose-outdated
скрипт у командному рядку. Ви, напевно, маєте застарілий модуль MooseX, який не сумісний з встановленою версією Moose.
Ви повинні бігти moose-outdated
кожен раз, коли ви оновлюєте Moose, але його легко забути, особливо коли Moose було оновлено, оскільки це - одна з залежностей іншого модуля, який ви встановлюєте.