我想在lib路径中使用$ var变量。
my $var = "/home/usr/bibfile;"
use lib "$var/lib/";
但是当我这样做时会抛出错误。
我想使用use lib "$var/lib/";
代替use lib "/home/usr/bibfile/lib/";
。
如何分配变量,以便可以在lib模块的设置中使用?
答案 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;