私は Perl で書かれたプロジェクトを引き継ぎました。このプロジェクトにはTemplate::Toolkit
、 、Image::ExifTool
、およびなどのいくつかの依存関係がGD
あります。--prefix
現在、これらの依存関係は、 のオプションを使用してディレクトリ (「deps」フォルダ) に組み込まれていますmake
。メインの Perl スクリプトでは、必要なモジュールをインポートするために次のようなものがあります。
use File::Spec::Functions qw(catdir);
use lib "lib";
use lib catdir(qw(deps lib perl5 site_perl));
catdir
特定のシステム要件から逸脱するために使用されます(「/」がフォルダー区切り文字であると想定するなど。誰かが別の代替手段を持っている場合、私は提案を受け入れます!)。「lib」フォルダーには私のモジュールが含まれており、「deps/lib/perl5/site_perl」フォルダーは私の依存関係が元のマシンにインストールされた場所です。
ただし、別のマシンで依存関係を構築した後、必要なライブラリが別のフォルダーに移動したようです。スクリプトを正しく実行するには、次のステートメントを使用する必要があります。
use File::Spec::Functions qw(catdir);
use lib "lib";
use lib catdir(qw(deps lib perl 5.14.2));
use lib catdir(qw(deps share perl 5.14.2));
use lib
とにかくプレフィックスディレクトリ(「deps」)を指定し、プラグマでそのディレクトリを再帰的に検索して依存関係を検索するかどうか疑問に思っていました。また、このスクリプトのユーザーはインターネットにアクセスできないため、私のプロジェクトを CPAN モジュールとしてコンパイルすることは非生産的です。
助けてくれてありがとう!