在perl中使用带有if pragma的lib

Viv*_*vek 6 perl

在perl中,我们可以做到:

使用lib LIST;

包含@INC中的路径列表.同样,我们可以这样做:

如果CONDITION,MODULE => ARGUMENTS,则使用;

有条件地包括一个模块.

是否有可能混合两者,比如

如果条件,列表使用lib;

有条件地包括路径列表.这似乎不起作用.

编辑:对不起,但我还是不能让它运转起来.这就是我在做的事情,但它不起作用.你能告诉我有什么问题吗?

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;
Run Code Online (Sandbox Code Playgroud)

Bor*_*din 10

if是一个单独的模块(严格意义上是一个pragma),它将该行的其余部分作为参数.lib也是一个单独的pragma.看一下记录的语法use if CONDITION, MODULE => ARGUMENTS,你会看到你应该写的是什么

use if CONDITION, lib => LIST;
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.

  • 人们总是忘记条件只能涉及编译时表达式. (4认同)