2014-11-07 3 views
0
OSX '매버릭스',이에

:선언 MooseX "해시 요소의 홀수":: ClassAttribute

package FOO;  
use Moose; 
use MooseX::ClassAttribute; 
class_has 'BAR' => (is => 'rw'); 

... 검사 '펄 -c'당 청소 :

FOO 단순히 '펄 FOO.pm'와 함께 실행하는 경우

OK가 .pm 구문 ...하지만이 오류를 제공합니다 :

/System/Library/Perl/Extras/5.16/MooseX/ClassAttribute.pm 라인의 해쉬 할당에있는 홀수 개의 요소 37. "strict refs"가 HASH ref로 사용되지 않습니다 ("file"). 내가 여기에 무슨 일이 일어나고 있는지 파악하기 위해 할 수있는 모든 방법을 시도했습니다 (71)

/Library/Perl/5.16/darwin-thread-multi-2level/Moose/Meta/Attribute.pm 라인에서 사용하지만, 나는 혼란 스럽다. 내가 '사용'해야하거나 먼저 선언해야 할 다른 것이 있습니까? (이것은 내가 생각해 낼 수있는 가장 작은 테스트 케이스이지만 모듈에서 class_has()를 사용할 때마다 오류가 발생합니다.

+0

나는 정말로 무스로 어떤 일을 해본 적이 없다.하지만 당신은 펄 모듈을 프로그램에 포함시키고 싶다. 나는 당신이'perl FOO.pm'을하고 있다고 생각하지 않지만'perl some_program.pl'은'use FOO.pm'을 가지고 있다고 생각합니다. – chilemagic

+1

커맨드 라인에서'moose-outdated'를 실행하십시오. 쓸모없고 호환되지 않는 모듈이있을 수 있습니다. – cjm

+0

SSCCE를 테스트했지만 정상적으로 작동합니다. 정확히 예상대로. 나는 @cjm이 올바른 방향에 있다고 생각한다; 도구 상자에 무언가가 오래되었거나 손상되었거나 불완전하게 설치되었습니다. – DavidO

답변

1

무스를 사용하는 모듈에서 이상한 오류가 발생하면 가장 먼저해야 할 일은 다음과 같습니다. 명령 행에서 moose-outdated 스크립트를 실행하십시오. 설치된 무스 버전과 호환되지 않는 구형 MooseX 모듈이있을 것입니다.

무스를 업그레이드 할 때마다 moose-outdated을 실행해야합니다. 특히 설치하는 다른 모듈의 종속성 중 하나이기 때문에 무스가 업그레이드되었을 때 잊기 쉽습니다.