在尝试使用库perl时,在库名中使用变量

时间:2014-04-23 14:41:48

标签: perl

我希望我的库名更改(我有理由),但是当我在库路径中使用变量时,它似乎无法找到它.....无法找到APOE。下午在@INC

my ($plugin_name) = @ARGV; 
use lib("/usr/share/perl/5.10.1/$plugin_name");
use APOE qw(callAPOE);

这不可能吗?

编辑: $ plugin_name =" AIB-TorrentPanel-v2.00&#34 ;; AND模块名称是 APOE.pm

2 个答案:

答案 0 :(得分:3)

你可以写一下:

use lib "/usr/share/perl/5.10.1/$ARGV[0]";

或者,如果你需要做一些比你的示例代码更复杂的设置目录名称:

my $plugin_name;
BEGIN {
    ($plugin_name) = @ARGV;
}
use lib "/usr/share/perl/5.10.1/$plugin_name";

答案 1 :(得分:2)

您的my ($plugin_name) = @ARGV;将在运行时运行,对lib来说已为时已晚。根据{{​​3}},use lib LIST;几乎等于

BEGIN { unshift(@INC, LIST) }

但您的$plugin_name当时无法使用。

但是,您可以将use替换为require,如下所示:

my ($plugin_name) = @ARGV;
require "/usr/share/perl/5.10.1/$plugin_name/APOE.pm";