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