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

时间:2012-12-19 10:47:47

标签: perl perl-module

我想在lib路径中使用$ var变量。

my $var = "/home/usr/bibfile;"

use lib "$var/lib/";

但是当我这样做时会抛出错误。

我想使用use lib "$var/lib/";代替use lib "/home/usr/bibfile/lib/";

如何分配变量,以便可以在lib模块的设置中使用?

3 个答案:

答案 0 :(得分:21)

首先,你有一个简单的语法错误 - 你在第一行之后缺少;my变量应该在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 ...
    ];

答案 1 :(得分:1)

不确定您要完成的任务,但似乎是FindBin::libs的任务:

my $var;
BEGIN { $var = "/home/usr/bibfile" };
use FindBin::libs "Bin=$var", "base=lib";

答案 2 :(得分:-2)

您不能,因为use指令在编译时计算,而其他变量在运行时计算。

如果您的lib位于相对于原始脚本的某个位置,则可以使用标准模块FindBin

# $Bin from FindBin is the directory of the original script
use FindBin;
use lib "$FindBin::Bin/path/to/bib";
use MyModule;