2012-07-17 4 views
1

Perl에서 오래된 응용 프로그램을 다시 작성하려고합니다.다른 디렉토리에 perl 꾸러미 설정하기

세 개의 패키지를 설정하고 서브 루틴을 실행하면 내가하려는 일에 대해 많은 의미를 갖지만 패키지 설정에 익숙하지 않습니다.

패키지가 다른 Perl 스크립트와 동일한 위치에 있어야합니다. 즉,이 bin 디렉토리의 스크립트가이 패키지를 호출해야합니다.

제 질문은 어떻게하면 내 패키지가 어디에 있는지 (그리고 다른 패키지를 기본 패키지가 아닌 다른 위치에 설치하는 방법) Perl에게 알려줄 수 있습니다. 이것은 괜찮은/똑똑한 일입니까?

답변

4

이것은 일반적인 작업입니다. PERL5LIB 환경 변수의 모듈을 찾기 위해 디렉토리의 목록을 포함 당신은 또한 특정 스크립트에 모듈을 찾아야한다 디렉토리를 지정하여 lib pragma를 사용할 수 있습니다.

#!/usr/bin/perl 

use strict; 
use warnings; 
use lib "$ENV{HOME}/lib"; 

것은 또한 cpanm 보길 원하는 것일 수도 및 local::lib. 패키지 및 스크립트 같은 위치에있는 경우

2

, 나는 FindBin를 사용하는 것이 좋습니다 것 :

use FindBin '$Bin'; 
use lib $Bin; 
+1

가 같은 위치에있는 경우 이미 포함 된 경로 아닌가요? –

+0

'FindBin'은 그와 같이 더 이상 사용되지 않지만 매우 모호한 방식으로 작업을 수행하며 깨는 경향이 있습니다 [여기에 설명 된대로] (http://www.perlmonks.org/?node_id=41213). 나는 [scriptname] (https://metacpan.org/module/scriptname)이 더 나은 선택이라고 생각한다. – Borodin

+1

@DimitarPetrov : 꼭 그런 것은 아닙니다. '@ INC'는 스크립트가 존재하는 디렉토리가 아니라 현재 작업 디렉토리 ('.')를 포함합니다. 두 스크립트는 스크립트가 현재 작업 디렉토리에 포함되어있는 경우에만 같습니다. – Zaid

관련 문제