簡體   English   中英

你如何在lib Path中使用變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM