lib 경로에 $ var 변수를 사용하고 싶습니다. 나는이 작업을 수행 할 때 lib 경로에서 변수를 어떻게 사용합니까?
use lib "$var/lib/";
my $var = "/home/usr/bibfile;"
use lib "/home/usr/bibfile/lib/";
대신 use lib "$var/lib/";
을 사용하고 싶습니다.
어떻게 변수를 할당하여 lib 모듈 설정에서 사용할 수 있습니까?
lib 경로에 $ var 변수를 사용하고 싶습니다. 나는이 작업을 수행 할 때 lib 경로에서 변수를 어떻게 사용합니까?
use lib "$var/lib/";
my $var = "/home/usr/bibfile;"
use lib "/home/usr/bibfile/lib/";
대신 use lib "$var/lib/";
을 사용하고 싶습니다.
어떻게 변수를 할당하여 lib 모듈 설정에서 사용할 수 있습니까?
첫째, 간단한 구문 오류가 있습니다. 첫 줄 이후에 ;
이 누락되었습니다. my
변수는 use lib
에서 정상적으로 작동해야합니다. 모든 use
지침이 BEGIN
블록에서 실행되기 때문에 너무 BEGIN
블록에서 초기화를 둘 필요가 있으므로
그러나, 당신의 변수는, 당신은 use
실행하는 순간에 초기화되지 않은 것입니다. 당신이 달성하려고하는 일에 대해
$VAR1 = [
'/home/usr/bibfile/lib/',
# ... more ...
];
@ikegami, lib는 발견 된 경우 대상의 표준 버전과 아치 서브 디렉토리도 검사하고 추가합니다. –
확실하지,하지만 FindBin::libs의 작업처럼 보인다 :
my $var;
BEGIN { $var = "/home/usr/bibfile"; }
use lib "$var/lib/";
use Data::Dumper;
print Dumper \@INC;
은 부여,
my $var;
BEGIN { $var = "/home/usr/bibfile" };
use FindBin::libs "Bin=$var", "base=lib";
나는'use lib "$ var/lib /";''lib 사용하기 "/ home/usr/bibfile/lib /";'를 사용하고 싶습니다. 변수를 할당하여 lib 모듈 설정에 사용할 수있게하려면 어떻게해야합니까? – Sourcecode
좋아, 귀하의 특정 필요에 맞게 답변을 편집 :) 그러나 하드 코드 된 절대 경로를 사용하지 말고 현재 스크립트 (FindBin :: libs의 목적)에 상대적인 것을 사용하지 않는 것이 좋습니다. – creaktive
@creaktive 답변 지금부터는 질문자와 같은 오류가 발생합니다. 수락 된 답변의 해결책을 사용하여이 문제를 해결할 수 있습니다. – MattLBeck
당신은 할 수없는 use
때문에 지시문은 컴파일 타임에 평가되고 다른 변수는 런타임에 평가됩니다.
# $Bin from FindBin is the directory of the original script
use FindBin;
use lib "$FindBin::Bin/path/to/bib";
use MyModule;
가 아닌 표준 디렉토리에 일부 라이브러리를 가지고 있고 당신이 그것을 사용하고 싶어 : 당신의 lib 디렉토리는 원래 스크립트에 어딘가에 상대적있는 경우
, 당신은 표준 모듈
FindBin
를 사용할 수 있습니까? – xhudik예. 라이브러리는 비표준 디렉토리에 있습니다. – Sourcecode