Perl スクリプトのモジュール依存関係を見つけるにはどうすればいいですか? 質問する

Perl スクリプトのモジュール依存関係を見つけるにはどうすればいいですか? 質問する

私が書いた Perl スクリプトを別の開発者に実行してもらいたいです。スクリプトは、スクリプトを実行する前にインストールする必要がある多くの CPAN モジュールを使用します。スクリプト (またはバイナリperl) で、不足しているモジュールのリストをダンプすることは可能ですか? スクリプトを実行しようとすると、Perl は不足しているモジュールの名前を出力しますが、これは冗長であり、不足しているモジュールを一度にすべてリストしません。次のようなことをしたいです:

$ cpan -i `said-script --list-deps`

あるいは:

$ list-deps said-script > required-modules # on my machine
$ cpan -i `cat required-modules` # on his machine

簡単な方法はありますか?これは致命的ではありませんが、他の開発者の作業を楽にしたいのです。(必要なモジュールは複数のファイルに散在しているため、何も見逃さずに手動でリストを作成するのは簡単ではありません。パーですが、私が求めているものにはちょっと複雑すぎるようです。


アップデート:ありがとう、Manni。それでいいでしょう。 については知りませんでした%INC。 についてしか知りませんでした@INC。 私は次のようなもので落ち着きました:

print join("\n", map { s|/|::|g; s|\.pm$||; $_ } keys %INC);

次のように出力されます:

Moose::Meta::TypeConstraint::Registry
Moose::Meta::Role::Application::ToClass
Class::C3
List::Util
Imager::Color

これはうまくいくようです。

ベストアンサー1

チェックアウトモジュール::ScanDepsまた、付属の「scandeps.pl」ユーティリティも使用できます。このユーティリティは、プログラムのコンパイル後または実行後に、コードの依存関係の静的 (および再帰的) 分析と %INC ダンプを実行できます。

静的ソース スキャンでは、常に依存関係が多すぎるというエラーが発生することに注意してください。(これは PAR で使用される依存関係スキャナーであり、エンド ユーザーにとって最も簡単なものを目指しています。)

最後に、スクリプトをCPANディストリビューションとして配布することもできます。これは実際よりもずっと複雑に聞こえます。次のようなものを使用することができます。モジュール::スターター仮のApp::YourScript配布物の基本的な骨組みをセットアップします。スクリプトをbin/サブディレクトリに配置し、Makefile.PLを編集して、スクリプトのすべての部分を参照します。直接依存関係。次に、配布のために次の操作を行います。

  1. perl メイクファイル.PL
  2. 作る
  3. 配布する

最後のステップでは、適切な App-YourScript-VERSION.tar.gz が生成されます。ここで、クライアントがすべての依存関係をインストールする場合は、次の操作を実行します。

  1. CPAN クライアントを正しく設定します。単に実行して質問に答えるだけです。しかし、いずれにしても、それはすでに必要です。
  2. 「tar -xz App-YourScript-VERSION.tar.gz && cd App-YourScript-VERSION」
  3. 「cpan」を実行します。

CPAN クライアントは、すべての直接依存関係とそれらのディストリビューションの依存関係を自動的にインストールするようになりました。設定方法に応じて、前提条件に自動的に再帰的に従うか、毎回 ay/n でプロンプトを表示します。

この例として、CPAN の App::* ディストリビューションをいくつか確認してみるとよいでしょう。App::Ack は良い例だと思います。私の CPAN ディレクトリ (SMUELLER) の App::* ディストリビューションの 1 つもよいかもしれません。

おすすめ記事