2014-09-23 6 views
0

유지 관리가 필요한 대규모 프로젝트가 있습니다. 내가 cmd를에있는 파일을 실행하면 이클립스 (펄에 대한 EPIC 플러그인을 사용하여)을 실행하는 경우, 그것은Eclipse (EPIC 플러그인) 대 Perl : 독립 실행 형 : 전역 심볼 "% Config"에는 명시 적 패키지 이름이 필요합니다.

perl entry.pl 

그러나 잘 작동, 그것은 프로젝트가 포함되어 내가 눈치

Global symbol "%Config" requires explicit package name at C:/Perl64/lib/Errno.pm line 11 

다음과 같은 오류가 발생합니다 config.pm이라는 파일 'c'는 config.pm에서는 소문자이지만 "% Config"에서는 대문자입니다. 나는 펄이 대소 문자를 구별한다고 생각했다. 하나의 솔루션은 config.pm과 그 참조를 다른 것으로 바꾸는 것입니다 (Perl installation broken에서 제안 된 것처럼).

config.pm에 대한 모든 참조의 이름을 바꾸는 것 외에도이를 해결할 수있는 방법이 있습니까?

Eclipse에서는 실행되지 않고 cmd에서는 실행되는 이유는 무엇입니까?

+2

'config.pm' 모듈이 아니라'% Config' 변수에 대해 불평하고 있습니다. 같은 이름이 붙여진 것은 우연의 일치입니다. 이클립스에서 올바른 작업 디렉토리를 설정하기 만하면된다 (미안하지만, 미안하다). – AKHolland

+0

@AKHolland config.pm과 그 모든 참조의 이름을 바꾼 후에도 효과가 있었지만 더 간단한 해결책을 찾고 있습니다. – Mathai

+0

lib/Errno.pm이 예상하는 % Config가 lib/Config.pm에 있습니다. 당신의 config.pm은 실수로 컴파일러를 혼란스럽게 할 정도로 네임 스페이스를 엉망으로 만든다. 당신이 다 해결했기 때문에 다행입니다. –

답변

1

이 문제가 해결 된 이래로. 나는 대답 할 것이므로 다른 사람을 도울 수 있다고 생각했습니다.

Eclipse에서 어떤 이유로 config.pm을 Config.pm에 내장 된 perl과 충돌 시키지만 'c'는 다른 경우입니다. config.pm이 큰 프로젝트의 일부인 경우, 클래스 구성에 대한 모든 참조의 이름을 다른 것으로 변경하는 것은 매우 어렵습니다. 가장 쉬운 난 단지 use config

use MyMod::config; 

을 변경해야 할 새로운 디렉토리 (예를 들어 mymod를)로 config.pm 이동이와 config.pm

에서

package MyMod::config; 

을하는 것입니다 이 솔루션은 EPIC와 외부 모두에서 작동합니다 (명령 행에서)