用BEGIN中的变量代替@INC

use*_*133 1 directory perl module

所以不要想放

BEGIN {push @INC , '/folder1', '/folder2', '/folder3'}
Run Code Online (Sandbox Code Playgroud)

找到我的模块.我想能够放一个变量,比如这个.

my $test = '/folder1';
BEGIN {push @INC , $test, '/folder2', '/folder3'}
Run Code Online (Sandbox Code Playgroud)

无论我做什么,它仍然不会找到我想要的模块.

amo*_*mon 5

A BEGIN在解析代码期间执行,因此它将在其外部的变量赋值发生之前执行.

解决方案是在BEGIN块内进行分配:

my $test;
BEGIN {
    $test = "/some/path";
}
use lib $test, "/path2", "path3";
Run Code Online (Sandbox Code Playgroud)

use lib …优选unshift @INC, …