Подтвердить что ты не робот

Как вы используете переменную в lib Path?

Я хотел бы использовать переменную $var в пути lib.

my $var = "/home/usr/bibfile;"

use lib "$var/lib/";

Однако, когда я это делаю, это вызывает ошибку.

Я хотел бы использовать use lib "$var/lib/"; вместо use lib "/home/usr/bibfile/lib/";.

Как я могу назначить переменную, чтобы ее можно было использовать в настройках модулей lib?

4b9b3361

Ответ 1

Переменные отлично работают при 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 ...
    ];

Ответ 2

Не уверен, что вы пытаетесь выполнить, но похоже на задачу FindBin:: libs:

my $var;
BEGIN { $var = "/home/usr/bibfile" };
use FindBin::libs "Bin=$var", "base=lib";

Ответ 3

Вы не можете, потому что директива use оценивается во время компиляции, тогда как другие переменные оцениваются во время выполнения.

Если ваша библиотека находится где-то по сравнению с исходным script, вы можете использовать стандартный модуль FindBin:

# $Bin from FindBin is the directory of the original script
use FindBin;
use lib "$FindBin::Bin/path/to/bib";
use MyModule;