我想在 lib 路径中使用 $var 变量。
my $var = "/home/usr/bibfile;"
use lib "$var/lib/";
但是,当我这样做时,它会引发错误。
我想使用use lib "$var/lib/";
而不是use lib "/home/usr/bibfile/lib/";
.
我怎样才能分配一个变量,以便它可以在 lib 模块的设置中使用?
我想在 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
指令是在编译时评估的,而其他变量是在运行时评估的。
如果您的库位于相对于原始脚本的某个位置,则可以使用标准模块FindBin
:
# $Bin from FindBin is the directory of the original script
use FindBin;
use lib "$FindBin::Bin/path/to/bib";
use MyModule;