2014-07-23 5 views
3

나는 두 개의 모듈이 의존성의 해결 :펄 - 지정된 하위 디렉터리에서 모든 모듈을 사용하여 자동으로

./My/Module1 
./My/Module2 

Module1하는 Module2에서 서브 루틴을 사용합니다. 그래서 내 스크립트에서 나는 다음과 같은 입력 :

use My::Module1 
use My::Module2 

을하지만이 일을하지 않고 펄은 Module1에 의해 Module2에서 사용되는 서브 루틴이 존재하지 않는 것을 불평했다. 그래서 Module1에 다음 줄을 추가 : 예상대로

use My::Module2 

마지막으로이 일했다.

특정 하위 디렉토리 트리의 모든 모듈을 포함하고 자동으로 의존성을 해결할 수있는 솔루션이 있는지 궁금합니다. 다른 모듈에 의존하는 모듈에 use 키워드를 입력하고 싶지 않습니다. 다음 명령을 시도했지만 그것은 작동하지 않았다 (중 구문 오류가 있거나 잘못된 모듈 사용) : 또한 내가 물어 보곤

use My::; 
use My::*; 
use My; 

을 경우이 교차 사용하여 모듈을하고 펄에서 좋은 연습으로 간주 서브 루틴의 호출 프로그램 작성?

추 신 : @INC에는 모듈로드가 가능하도록 현재 디렉토리가 있습니다.

PPS : 모듈 내가 다른 모듈에 따라 모듈에서 use 키워드를 입력하지 않으

+1

"이 교차 모듈을 사용하고 서브 루틴을 호출하는 것이 Perl 프로그래밍의 우수 사례로 간주 될지 물어볼 것입니다." ... 예, 단방향 (예 : Module1에만 Module2가 필요합니다. Module1을 Module2에 의존 시키면 __and__ Module2는 Module1에 의지하여 해결할 수없는 종속성을 갖게됩니다. – Leeft

답변

1

Exporter을 사용했다.

은 그런 대신 BEGIN, requireimport 키워드를 입력?

진지하게, 이것이 작동하기에 좋은 방법은 없습니다. 각 모듈에 use을 사용하면 필요한 것을로드 할 수 있습니다.

또한이 교차 모듈을 사용하고 서브 루틴을 호출하는 것이 Perl 프로그래밍의 우수 사례로 간주 될지 묻습니다.

예. 모듈화는 모두 프로그래밍에서 우수 사례로 간주됩니다.