Как разрешить всем проектам EPIC использовать Perl @INC?

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

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

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


person Piotr Dobrogost    schedule 13.11.2009    source источник
comment
Это похоже на запрос функции к проекту EPIC.   -  person Ivan Nevostruev    schedule 13.11.2009
comment
@Ivan Может быть, это так задумано? У меня мало опыта работы с Perl, и я не уверен, каким должно быть поведение в этом сценарии.   -  person Piotr Dobrogost    schedule 13.11.2009


Ответы (3)


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

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

person Chad A. Davis    schedule 04.06.2010
comment
Спасибо за этот ответ! Это решение более элементарного, но неприятного вопроса. Почему eclipse EPIC не видит с моего терминала то же содержимое @INC, что и perl? Примечание: теперь в настройках eclipse для EPIC установлен флажок «Проверка испорченности». - person Stuart R. Jefferys; 17.09.2012
comment
Также важно, чтобы исполняемый файл Perl действительно был Perl, который вы используете; то есть в моем случае я работаю в Mac OS X с пользовательской установкой perl из macports, поэтому какой perl из списка командной строки /opt/local/bin/perl. Когда я добавил это как исполняемый файл, мой @INC внезапно начал работать. - person Stuart R. Jefferys; 17.09.2012


Из ответа 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

прагма использования lib:

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

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

person brian d foy    schedule 26.11.2009