3

一連の相互依存 Perl プロジェクトがあり、EPICを使用してそれらに取り組みたいと考えています。プロジェクトごとに 1 つの Epic (Eclipse) プロジェクトを作成し、Project|Properties|Project References 関数を使用してそれらの間の依存関係を設定しました。プロジェクトごとに、プロジェクト | プロパティ | Perl インクルード パスで Perl インクルード パス ( @INC) を設定し、このプロジェクトで使用されるライブラリへのパスを追加します。

問題は、@INC設定が推移的ではないように見えることです。プロジェクト B がプロジェクト A を参照する場合、Bは A を自動的@INCに組み込みません。@INC実際には、A@INCから B へのパスを手動で追加@INCして、Epic が必要なすべての Perl ライブラリを認識できるようにする必要があります。

それは自動的に行うことができますか?

4

3 に答える 3

3

Eclipse に移行していて、それが $PERL5LIB を使用することを期待している場合は、-T (taint モード) がデフォルトで EPIC で有効になっているように見えることに注意してください。$PERL5LIB を元に戻すには、"Perl EPIC"->"Perl executable" を単に "perl" ("perl -T" ではなく) に設定するだけです。

Project->Properties で @INC を定義する方が良い設計と考えられるかもしれませんが、少なくとも私たちの部門では、$PERL5LIB はマシンごとに異なります。

于 2010-06-04T09:33:36.900 に答える
1

perlrunのマンページに記載されているPERL5LIB環境変数を知っていますか?

PERL5LIB

標準ライブラリと現在のディレクトリを検索する前に、Perlライブラリファイルを検索するディレクトリのコロンで区切られたリスト。PERL5LIB定義されていない場合は、PERLLIBが使用されます。汚染チェックを実行する場合(スクリプトがsetuidまたはsetgidを実行していたため、または-Tスイッチが使用されたため)、どちらの変数も使用されません。スクリプトは代わりに言うべきです

use lib "/my/directory";

@INCこの例では、PERL5LIBをプロジェクトAとプロジェクトBの値の和集合に設定する必要があります。

前述のように、プロジェクトのいずれかで汚染チェック(#! /usr/bin/perl -T)が有効になっている場合は、ハードコーディングが優れたオプションです。

于 2009-11-17T23:23:18.900 に答える
1

perlfaq8の回答からHow do I add a directory to my include path (@INC) at runtime へ。これらのテクニックの 1 つを 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 プラグマ:

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

最後のものは、マシンに依存するアーキテクチャについて知っているため、特に便利です。lib.pm プラグマティック モジュールは、最初に Perl の 5.002 リリースに含まれました。

于 2009-11-26T01:06:43.197 に答える