두 가지 버전의 Perl 모듈이 있습니다. 현재 중요한 스크립트는 환경 변수에 지정된 모듈 버전을 사용하며 시스템은 다른 사용자가 실행하는 다른 작업에 의존합니다. 사용자 환경에 따라 사용 된 Perl 모듈의 버전이 결정됩니다.어떻게 Perl 모듈 경로를 동적으로 변경합니까?
이제 이것을 전달 된 옵션에 따라 Perl 스크립트 내에서 지정된 버전으로 변경하고 싶습니다. 죄송합니다. 코드는 다음과 같습니다.
if ($new){ use lib "newdir"; }
else{ use lib "olddir"; }
use module;
이 작동하지 않습니다. Perl은 단순히 newdir을 추가 한 다음 olddir to @INC
을 추가 한 다음 스크립트를 실행합니다.
사용할 모듈을 어떻게 동적으로 지정합니까? 당신이하지 않았을 있도록 또한 PERL5LIB
환경 변수를 설정할 수 있습니다
BEGIN {
if ($new) { unshift @INC, "newdir"; }
else { unshift @INC, "olddir"; }
}
use module;
: else
코드를 컴파일 시간에 실행됩니다 -
* 별난 * 브라케팅 스타일로 인해 닫히지 않은 블록이 남았습니다. (이제, 깜짝 놀라는 전쟁을 시작하십시오!) – Axeman
Eek. Axeman에게 감사드립니다. – mob
또한 언급 할 가치가있는 것은 "lib 사용"과 @INC를 직접 조작하는 것이 항상 동등한 작업이 아니라는 것입니다. 자세한 내용은 문서를 참조하십시오. – jrockway