[英]How do you use a variable in lib Path?
我想在lib路徑中使用$ var變量。
my $var = "/home/usr/bibfile;"
use lib "$var/lib/";
但是,當我這樣做時,它會拋出一個錯誤。
我想use lib "$var/lib/";
而不是use lib "/home/usr/bibfile/lib/";
。
如何分配變量,以便可以在lib模塊的設置中使用?
變量在use lib
時運行良好,就像在任何字符串中一樣。 但是,由於所有use
指令都是在BEGIN
塊中執行的,因此在運行use
,您的變量尚未初始化,因此您還需要在BEGIN
塊中初始化。
my $var;
BEGIN { $var = "/home/usr/bibfile"; }
use lib "$var/lib/";
use Data::Dumper;
print Dumper \@INC;
得到:
$VAR1 = [
'/home/usr/bibfile/lib/',
# ... more ...
];
不確定你想要完成什么,但似乎是FindBin :: libs的任務:
my $var;
BEGIN { $var = "/home/usr/bibfile" };
use FindBin::libs "Bin=$var", "base=lib";
您不能,因為use
指令是在編譯時計算的,而其他變量是在運行時計算的。
如果您的lib位於相對於原始腳本的某個位置,則可以使用標准模塊FindBin
:
# $Bin from FindBin is the directory of the original script
use FindBin;
use lib "$FindBin::Bin/path/to/bib";
use MyModule;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.