4

私はオブジェクト指向プログラミングは初めてで、CPAN.pm の perldoc ページは私を混乱させます。私のプログラムは、まだ存在しない場合、いくつかのモジュールをダウンロードする必要があります。これは基本的にちょうどですか:

CPAN::Shell->install("Module::Name::Here");

それともそれ以上のものがありますか?パッケージをダウンロードし、アーカイブを解除してインストールしますか、それともこれらの手順の 1 つまたは 2 つだけですか? 3 つすべてではない場合、残りの 1 つ (または 2 つ) はどうすればよいですか? パッケージが既に存在する場合、何も再インストールしようとしないことを確認したいと思います-これは関数のデフォルトの動作ですか、それともいいえですか?

また、Perl が CPAN に接続してパッケージを取得できなかったかどうかは、どうすればわかりますか?

4

6 に答える 6

7

誰も言及していませんが、最初に CPAN 構成をロードする必要があります。

use CPAN;

CPAN::HandleConfig->load;
CPAN::Shell::setup_output;
CPAN::Index->reload;

# now do your stuff

また、CPAN.pm に付属する cpan(1) スクリプトを見て、プログラマーのインターフェースの多くが動作していることを確認できます。また、 The Perl Reviewの最新号の記事で、プログラマーの CPAN.pm へのインターフェイスの例を示しています。

ただし、これを行う必要がない場合もあります。プログラムがモジュールを単独でダウンロードするのはなぜですか? 依存関係のあるディストリビューションを作成しようとしていますか? 他のツールで既に行われている作業を繰り返す必要がないように、これを処理するためのより良い方法があります。たとえば、私の記事「Creating Perl Application Distributions」を参照してください。プログラムをモジュールであるかのように扱い、すべての優れたモジュール ツールの利点を得ることができるため、何かを再発明する必要はありません。

実際に解決しようとしている問題について詳しく教えていただければ、他にも良い答えがあるかもしれません。:) 幸運を、

于 2009-01-21T02:32:44.600 に答える
6

CPAN.pm の perldoc ページは私を混乱させます。

はい、CPAN API のドキュメントはまだ少し不足しています。他の人がプログラムで使用できるように設計されているわけではありません。利用できる場合は、 CPANPLUSを使用すると幸運が得られる可能性があります。

私のプログラムは、まだ存在しない場合、いくつかのモジュールをダウンロードする必要があります。これは基本的には次のとおりですか: CPAN::Shell->install("Module::Name::Here");

はい、それは可能な限り単純なことです。実際、「cpan Module::Name::Here」と入力したときに「cpan」コマンド ライン プログラムが行うことはほとんどすべてです。ただし、事前に CPAN.pm を構成しておく必要があります。

それはパッケージをダウンロードし、アーカイブを解凍してインストールしますか?

はい、3 つすべてです。

パッケージが既に存在する場合、何も再インストールしようとしないことを確認したいと思います-これは関数のデフォルトの動作ですか、それともいいえですか?

はい、モジュールが最新の場合、デフォルトの動作では何もインストールされません。実際には、次のような「uptodate()」メソッドを使用して自分で確認できます。

my $mod = CPAN::Shell->expand("Module", "Module::Name::Here");
$mod->install unless $mod->uptodate;

また、Perl が CPAN に接続してパッケージを取得できなかったかどうかは、どうすればわかりますか?

これを簡単に説明できる方法でプログラム的に行うのは困難です。出力を確認するか、後で $mod->uptodate を確認する必要があります。

my $mod = CPAN::Shell->expand("Module", "Module::Name::Here");
if ( ! $mod->uptodate ) {
    $mod->install;
    die "Problems installing" unless $mod->uptodate;
}

頑張ってください!

于 2009-01-21T02:14:44.323 に答える
1

基本的にCPANの使用は次のとおりです。

perl -MCPAN -e shell

初めて実行する場合は、いくつかの質問が表示され、結果が構成ファイルに保存されます。

PGP::Sign をインストールするには、次のように入力します。

install PGP::Sign

これで準備完了です。

最後の質問ですが、接続できるかどうかが表示されますのでご安心ください。

于 2009-01-20T23:58:25.033 に答える
1

私は過去(比較的遠い過去 - 5年前など)にCPANモジュールを使ってプログラムで物事をやろうとしましたが、あまり成功しなかったので、やめました。もちろん、それは当時とは状況が変わった可能性があることを意味します。ただし、ここにあるCPANのドキュメントが役立つはずです。有望そうなCPAN::API::HOWTOには 2 つのレシピしかなく、どちらも問題には関係ありません。また、CPANPLUS の方が優れているかどうかを調べることもできます。私は、CPAN を使用するよりもはるかに頻繁にインタラクティブに使用しています。ただし、どちらも素晴らしいモジュールです。

したがって、@Keltia が示唆するように、私は対話的に CPAN (CPANPLUS) を実行します。

于 2009-01-21T00:04:50.623 に答える
1

おわかりのように、私たちのほとんどは CPAN.pm をインタラクティブ モードでしか使用していませんが、正しい軌道に乗っています。

現時点で指摘できること:

  • はい、CPAN::Shell->install() を呼び出すと、パッケージがダウンロード、コンパイル、テスト、およびインストールされます。また、パッケージが持つ依存関係についても、再帰的に同じことを行う必要があります。
  • デフォルトの動作では、既にインストールされているものはインストールされません (新しいバージョンが利用可能でない限り)。
  • エラー処理がどのように機能するかは厳密にはわかりません。調べて、また報告します。
  • ただし、ユーザーにプロンプ​​トが表示される場合があります。
于 2009-01-21T02:11:50.163 に答える
-2

ケルティアはそれを正しく持っています。彼の最初の指示は、通常は root としてコマンド プロンプトから行われますが、必ずしもそうとは限りません。2 番目のコマンドは、CPAN プロンプトから実行されます。コマンドラインですべて実行することもできますが、私は通常そうしません。

Windows を使用している場合、最善の策は PPM を使用することですが、ほとんどの場合、PPM のリポジトリは面倒なほど古くなっています。

于 2009-01-21T00:08:44.093 に答える