2009-12-07 4 views
3

일부 모듈을 작성하여 실행하려고했습니다. 모듈을 가져갈 위치를 어떻게 알 수 있습니까?필자가 작성한 Perl 모듈은 어디에서 설치해야합니까?

나는 Windows에 글을 쓰고 있으며, c:\perl\lib에 넣으려고했으나 도움이되지 않았습니다.

모듈을 호출하는 파일과 같은 디렉토리에 넣을 수 있습니까? 모듈 검색

@INC 

:

답변

13

펄의 패스를 사용한다. (가 .pm 파일) 당신이 만약

:

perl -e 'print join "\n", @INC;' 

현재 모듈 검색되고 어떤 경로를 확인할 수 있습니다. C 내부

BEGIN { unshift @INC, 'C:\mylibs' } 

또는

use lib 'C:\mylibs' 

과 장소 MyModule.pm가 : \ mylibs 활성화하려면 : 1

당신이 할 수 있습니다 (이 @INC 목록은 펄 실행 파일로 컴파일)

use MyModule; 
6

정확하게 이것은 local::lib이 처리하도록 설계된 것입니다. 기본적으로 use local::lib;은 모듈 검색 경로 (@INC) 앞에 ~/perl5을 붙이지 만 다른 디렉토리를 쉽게 추가 할 수 있습니다.

고정 디렉토리 (홈 디렉토리에 상대적인 디렉토리가 아닌)로 작업하는 경우 use lib 'PATH'을 사용하는 것이 좋습니다.

명령 줄에서만 실행되는 코드의 경우 다른 옵션은 개인 모듈 디렉터리를 가리키는 PERL5LIB 환경 변수를 만드는 것입니다. 이렇게하면 명령 줄에서 사용자 계정에 의해 실행되는 모든 Perl에 영향을 미치므로이 방법으로 Perl 코드를 수정할 필요가 없지만 비 명령 행 코드 (예 : 웹 스크립트)를 설정하는 것이 더 까다 롭습니다), 코드가 여러 사용자에 의해 실행될 경우 PERL5LIB 모두에 대해 설정해야합니다.

어떤 경우에도 @INC와 (과) 관련없는 내용을 권유합니다. 요즘에는 쉽게 할 수있는 방법이 많이 있습니다. 응용 프로그램 별 라이브러리의

4

는 일반적인 방법은 @INC에 응용 프로그램의 라이브러리를 추가 한 후 use lib을 응용 프로그램 디렉토리를 찾습니다 FindBin 모듈을 사용하는 것입니다 : 범용 모듈의 경우

use FindBin; 
use lib "$FindBin::Bin/lib"; 
use AppModule; 

, 내가 개발하는 것이 좋습니다 CPAN 릴리스 (예 : module-starter으로 시작)와 동일한 방법으로 perl (보통 site/lib 아래)으로 설치하십시오. 참고 : Which framework should I use to write modules?

perl로 설치할 수없는 경우 (즉, 필요한 권한이없는 경우) 개인용 라이브러리를 대신 사용할 수 있습니다. perlfaq8의 How do I keep my own module/library directory?을 참조하십시오.

관련 문제