Как мне разрешить всем проектам EPIC использовать Perl @INC? - PullRequest
2 голосов
/ 13 ноября 2009

У меня есть набор внутризависимых проектов Perl, и я хотел бы использовать EPIC для их работы. Я создал один проект Epic (Eclipse) для каждого из моих проектов и установил зависимости между ними с помощью функции Project | Properties | Project References. Для каждого проекта я также установил Perl Include Path (@INC) в Project | Properties | Perl Include Path, добавляя пути к библиотекам, используемым в этом проекте.

Проблема в том, что настройка @INC не кажется транзитивной; если проект B ссылается на проект A, B's @INC не включает A's @INC автоматически. По сути, я должен вручную добавить пути от A @INC к B @INC, чтобы Epic увидел все необходимые Perl-библиотеки.

Можно ли это сделать автоматически?

Ответы [ 3 ]

3 голосов
/ 04 июня 2010

Если вы переходите на Eclipse и ожидаете, что он будет использовать $ PERL5LIB, помните, что -T (режим taint), по-видимому, включен в EPIC по умолчанию. Просто установите "Perl EPIC" -> "Исполняемый файл Perl" просто на "perl" (а не на "perl -T"), чтобы вернуть ваш $ PERL5LIB.

Возможно, лучше определить @INC в вашем Project-> Properties, но, по крайней мере, в нашем отделе $ PERL5LIB отличается от машины к машине.

1 голос
/ 26 ноября 2009

От ответа perlfaq8 на Как добавить каталог к ​​моему пути включения (@INC) во время выполнения .Вам просто нужно использовать один из этих методов с EPIC.


Как добавить каталог к ​​моему пути включения (@INC) во время выполнения?

Вот предлагаемые способыизменение включаемого пути, включая переменные среды, переключатели времени выполнения и операторы в коде:

переменная среды PERLLIB

$ export PERLLIB=/path/to/my/dir
$ perl program.pl

переменная среды PERL5LIB

$ export PERL5LIB=/path/to/my/dir
$ perl program.pl

флаг командной строки perl -Idir

$ perl -I/path/to/my/dir program.pl

use lib pragma:

use lib "$ENV{HOME}/myown_perllib";

Последнее особенно полезно, поскольку оно знает о машинно-зависимых архитектурах.Прагматический модуль lib.pm был впервые включен в версию Perl 5.002.

1 голос
/ 18 ноября 2009

Вам известна переменная среды PERL5LIB, задокументированная в справочной странице perlrun ?

PERL5LIB

Список каталогов, разделенных двоеточиями, в которых нужно искать файлы библиотеки Perl, прежде чем искать в стандартной библиотеке и текущем каталоге. Если PERL5LIB не определено, используется PERLLIB. При выполнении проверки на заражение (поскольку в сценарии выполнялся setuid или setgid или использовался переключатель -T ), ни одна из переменных не используется. Вместо этого сценарий должен сказать
use lib "/my/directory";

В вашем примере вам нужно настроить PERL5LIB на объединение значений @INC в Проекте A и Проекте B.

Как уже отмечалось, если в каком-либо из проектов включена проверка заражения (#! /usr/bin/perl -T), тогда жесткое кодирование является лучшим вариантом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...