Perl을 사용하면 접했던 애매한 문제들에 대한 문제와 그 해결법을 FAQ형식으로 모아볼 생각입니다. --microcos
Perl 모듈을 including 시키는 디렉토리 설정 ( @INC의 영구 변경 )
RedHat 배포판을 설치하면 perl은 /usr/bin에 설치가 된다. 만약 RedHat 7.3을 설치하면 Perl 5.6.1이 기본으로 설치되며 경우에 따라 5.8.3을 RPM으로 설치하지 않고 source를 받아서 설치하면 기본 설치 디렉토리가 /usr/local/bin과 /usr/local/lib에 설치가 된다. 물론 ./configure에서 세부지정을 바꿔서 가능하지만 RedHat 배포판에 따라 조금씩 바뀌므로 정확히 지정하는 것에 신경이 많이 쓰인다. 따라서 source로 설치하는 경우에 기본 디렉토리인 /usr/local이하에 설치되는 경우가 많다. 이렇게 설치하면 기존에 설치된 경로에 있는 라이브러리를 불러올 때 오류가 많이 발생한다( @INC 배열에 참조할 디렉토리 리스트가 등록되어 있음). 다음은 Perl 5.6.1이 설치된 RedHat 7.3에 Perl 5.8.3을 source로 설치한 뒤의 @INC 배열의 내용이다.
#perl -V ...중략... @INC: /usr/lib/perl5/5.8.3/i686-linux /usr/lib/perl5/5.8.3 /usr/lib/perl5/site_perl/5.8.3/i686-linux /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl/5.6.0 /usr/lib/perl5/site_perl .
@INC 배열에 펄 모듈을 경로를 추가하는 방법은 perl -I/usr/directory/하거나 펄 코드에 다음과 같이 use lib programa를 추가하는 것이다.
use lib "/usr/local/lib/perl5/..."; use MyPerlPM .
하지만, 이런 방법은 매번 사용하기에는 불편하므로 @INC에 미리 지정하는 것 좋다. 이럴때는 /etc/profile를 편집하여 환경변수 PERL5LIB를 추가하면 된다.
편집할 파일을 불러오고,
#vi /etc/profile
다음과 같이 환경변수를 설정 라인을 추가.
export PERL5LIB=/usr/local/lib/perl5/...
시스템에 반영한다.
#source /etc/profile
지금까지의 내용을 요약하면
perl -I 옵션 사용
use lib 프로그래마 사용
PERL5LIB 환경변수 설정
이다.