2014-02-12 3 views
0

요약 : 내 스크립트는 모듈로드에 사용되는 심볼릭 링크를 변경하고 동일한 모듈의 두 가지 다른 버전을 동일한 위치에서 한 번로드해야합니다 움직이고, 일단 움직이면.Perl에 네임스 겹치기가있는 모듈로드하기

요약 : 내 스크립트는 현재 작업중인 프로그램의 설치된 버전을 변경합니다.

폴더에는 내 소프트웨어의 설치된 브랜치 ('/ a/b/c/1_parallelogram')를 가리키는 심볼릭 링크 ('/ a/b/c/parallelogram')가 있습니다.

내 스크립트는 'use parallelogram :: Const'로 시작합니다. 그런 다음, 필자는 평행 사변형 심볼 링크를 '/ a/b/c/2_parallelogram'에 놓는 것을 포함하여 몇 가지 작업을 수행합니다.

이 시점에서 필자는 '2_parallelogram/Config.pm 필요'가 있습니다. 문제는 Config.pm에 'parallelogram :: Const 사용'이 있습니다.입니다. 2_parallelogram에서 Const.pm을 참조하려면이 코드가 필요하지만, 이미 1_parallelogram/Const.pm이로드되어 있으므로 해당 파일이 사용됩니다.

Config.pm 또는 Const.pm의 내용을 변경할 수 없습니다.

이러한 'use'문을 로컬로 범위를 지정하거나로드 할 모듈을 무시하거나 이러한 모듈을 언로드 할 수있는 방법이 있습니까?

감사합니다.

답변

2

는 심볼릭 링크를 변경 한 후, 수행

delete $INC{'parallelogram/Const.pm'}; 
delete $INC{'parallelogram/Config.pm'}; 
use Symbol 'delete_package'; 
delete_package('parallelogram::Const'); 
delete_package('parallelogram::Config'); 
require parallelogram::Config; 
+0

덕분에,이 다시 질문을 읽고 업데이트 매력 – Josh

+0

처럼 작동합니다. – ysth

관련 문제