ソースコードリポジトリのlibディレクトリに保持されているモジュールを使用できるようにしたいのですが、開発者が作成しているスクリプトを使用するための唯一の前提条件は、標準のPerlインストールを使用することです。これを達成する方法がわからない。
私のスクリプトでは、
use FindBin qw($Bin);
use lib "$Bin/lib"; # store non standard modules here
use Term::ANSIColor;
use Win32::Console::ANSI;
print Term::ANSIColor::colored("this should be in color\n", "bold red");
モジュールを./libに配置します。それがモジュールが存在する実際の場所であることを確認しました(名前を変更して失敗させることにより)。ただし、モジュールが任意のlibディレクトリにある場合でも、ppmがモジュールを認識する必要があるようです。
最初にppmで「インストール」されない限り、スクリプトでlib内でスクリプトを検索/使用することはできません。これを回避する方法があるはずだと思います。
これは非定型のリクエストかもしれませんが、私の目標はおそらく非定型です。開発者にチェックアウトを実行して、追加のコマンドを実行したりパッケージマネージャーを使用したりせずに、すぐにいくつかのスクリプトを使用してもらいたいだけです。
洞察をありがとう。
編集:私は完全な例で更新しました。また、ppmを介してアンインストールすると(ただし、pmは参照ディレクトリに残しておく)、構文を変更する必要がある可能性があることにも気付きました。以前はそれを考慮していませんでした。したがって、フルパスを指定するか、jheddingsやBipedalSharkプロポーザルのようにrequireを使用する必要があります(つまり、「インストール」されていない場合は、「require」を使用して「.pm」を追加するか、BEGINブロックを使用する必要があります。
この場合、正しい構文が見つかりません。
編集2:以下のコメントに基づいて、私は欠陥のある仮定を持っている可能性があることを認識しています。私の理由は次のとおりです。実際のコード「.pm」を直接参照すると、パッケージマネージャーを使用せずに使用できるはずです。そうではないかもしれませんし、それをやりたいのなら、別の方法でやらなければならないかもしれません。または、「。pm」のコードをリファクタリングする必要がある場合があります。
編集3:私はいくつかのことを誤解していたと思います。IDEのエラーメッセージ「Compilationfailedinrequire」、モジュールを含めるために使用していた行の強調表示、および「モジュールWin32 :: Console::ANSIのロード可能なオブジェクトが見つかりません」というコンソールエラーメッセージ
モジュール自体のロードに関する問題として読んでいましたが、モジュール自体がロードしようとしていることに起因する問題のようです。興味深いことに、私はppmインストールを使用しなかったので、これは問題にすぎません。
実際のモジュールを見つけています。トラブルラインをコメントアウトすることで確認できました。
助けてくれてありがとう、でももう少し時間をかけなければならない。