在Perl中,我们可以这样做:使用LIB用,如果用Perl编译
使用LIB LIST;
在@INC中包含路径列表。同样,我们可以这样做:
如果使用CONDITION,MODULE => ARGUMENTS;
有条件地包含模块。
是否有可能做到两者的混合,像
使用lib如果条件,LIST;
有条件地包括路径列表。这似乎并不奏效。
编辑: 对不起,但我仍然无法工作。这是我正在做的,但它不工作。你能提出什么问题吗?
use Data::Dumper;
BEGIN {
my $env=$ENV{'ENV'};
use if $env eq 'OLD', lib => '/home/vivek/OLD';
use if $env eq 'NEW', lib => '/home/vivek/NEW';
}
print Dumper \@INC;
您的情况必须在编译时解决。 – tchrist 2012-03-09 13:27:25
我看到它的工作原理是,如果不是将$ ENV {'ENV'}赋值给一个变量,然后使用它,而是直接使用$ ENV {'ENV'}。但是不能在BEGIN块中计算$ env。 – Vivek 2012-03-09 16:38:44
您的示例将无法使用。赋值'my $ env = ...'会在'use if'后面运行。 'if if'先走。你必须有一个完全封闭的'BEGIN'块来分配给一个非我的变量,然后在这个块之外和之下,使用你的'use if'来涉及到这个变量。 – tchrist 2012-03-09 17:31:36