2

私は perl プログラマーではありません。perl をインストールしたばかりで、それを使用して PERL スクリプトを実行しようとすると、デバッグ モードで次のエラーが発生します。

デバッグ モードで動作する Win32::OLE: _Unique => 1 at C:/strawberry/perl/vendor/lib/Win32/OLE/Lite.pm 行 30. C:/strawberry/ で呼び出される Win32/OLE/Lite.pm が必要perl/vendor/lib/Win32/OLE.pm 48 行目 C:\Users\c_desaik\Desktop\pwrdb\offtarget\pwrdb.pl で呼び出される Win32/OLE.pm が必要 37 行目 main::BEGIN() が C:/ で呼び出されるストロベリー/perl/vendor/lib/Win32/OLE/Lite.pm 行 0 eval {...} C で呼び出されます:/strawberry/perl/vendor/lib/Win32/OLE/Lite.pm 行 0 main::(C :\Users\c_desaik\Desktop\pwrdb\offtarget\pwrdb.pl:53): 53:
私の $prod_id = "QPSTAtmnServer.Application";

何を伝えようとしているのかほとんど理解できませんが、パッケージ ライブラリに OLE.pm ファイルがないようです。だから私はそれを検索し、次のリンクを見つけました:

http://cpansearch.perl.org/src/JDB/Win32-OLE-0.1711/lib/Win32/OLE.pm

まあ、そこにダウンロードを言っているリンクはありません。このソース コードをライブラリに追加する方法もわかりません。ソースコードをメモ帳にコピーしてpmファイルとして保存するか、何か他のことをしますか?

何か助けはありますか?

4

2 に答える 2

6

この種の質問がかなり頻繁に出てくることに気付いたので、誰にとっても簡単な紹介として役立つ一般的な回答を入力します.

そう!

通常、次の 3 つの方法のいずれかでモジュールを取得します。

CPAN から (最も一般的)

CPAN はかなり完全なガイドを提供しています: How to install CPAN Perl modules。インストールした Perl ツールに応じて、コマンドラインで次のいずれかを試すことができます。

cpan install Some::Module
cpanm Some::Module

あなたは Windows を使用しているので、Strawberry Perl には両方のツールがインストールされているはずです。

すぐにビルドできるソース (あまり一般的ではありません)

Github やその他のオープン ソース リポジトリでビルド対応のモジュールを見つけた場合、とにかく CPAN で利用できる可能性があります。そうでない場合、または開発ビルドをインストールしたい場合、ほとんどの成熟したモジュールには、クローンを作成してビルドするための簡単な手順が含まれています。プロジェクトの README ファイルを確認してください。

クローン作成後、次のようなものが人気があります。

perl Build.PL
./Build
./Build test
./Build install

上記は、Module::Buildによって提供される一連のスクリプト化された操作です。これは、配布用にモジュールをまとめる一般的なメカニズムです。

スタンドアロン Perl ファイル (まれ)

孤独なモジュール ファイルには、テストやインストール スクリプトは含まれません。私はそのようなモジュールを信頼することに慎重ですが、それらを使用することは可能です。

上記のいずれかの方法で、さまざまな依存関係をインストールする必要がある場合があります。私の経験では、これらのアドホック モジュールのほとんどは、それ自体が「インストール」されることを期待しておらず、現在のプロジェクトのルート ディレクトリにそのままにしておくことができます。

于 2013-12-19T01:31:15.370 に答える
3

非常に重要な質問:

  • ストロベリーパールはありますか、それとも
  • ActivePerl はありますか?

Strawberry Perl を使用している場合は、cpanというコマンド ライン ユーティリティを使用します。GUI に慣れている人にとって、これは少し怖いかもしれません。まず、それを実行して、それ自体を構成できるようにする必要があります。構成の多くはかなり自動化されており、デフォルトをそのまま受け入れることができます。

構成したら、もう一度実行する必要がある場合がありますcpan*.pmサフィックスは Perl モジュールを表し、不足している Perl モジュールをインストールする必要があります。エラーメッセージをもう一度見てみましょう。

デバッグモードで動作する Win32::OLE: _Unique => 1 at
C:/strawberry/perl/vendor/lib/ Win32/OLE/Lite.pm行 30. C:/strawberry/ で呼び出されるWin32/OLE/Lite.pmが必要perl/vendor/lib/ Win32/OLE.pm 48 行目C:\Users\c_desaik\Desktop\pwrdb\offtarget\pwrdb.pl で呼び出されるWin32/OLE.pmが必要 37 行目 main::BEGIN() が C:/ で呼び出されるストロベリー/perl/vendor/lib/ Win32/OLE/Lite.pm 0行目 eval {...} C:/strawberry/perl/vendor/lib/Win32/ OLE/Lite.pm 0行目で呼ばれる:: (C :\Users\c_desaik\Desktop\pwrdb\offtarget\pwrdb.pl:53): 53: 私の $prod_id = `"QPSTAtmnServer.Application";

this によると、2 つのモジュールがありません。1 つはWin32::OLE::Lite(からWin32/OLE/Lite.pm) 呼び出され、もう1 つはWin32::OLE(からWin32/OLE)呼び出されます

http://search.cpan.comにアクセスしWin32::OLE::Liteて検索ボックスに入力すると、このモジュールの使用方法を説明するWin32::OLE CPAN ページが表示されます。Win32::OLE::Liteこのモジュールに含まれているサブモジュールであることがわかりました。個別に対処することはありません。

次に、このモジュールは、他のモジュールに依存できる他のモジュールに依存する可能性があります。心配する必要はありません。CPAN がすべての依存関係の問題を処理します。

このモジュールをインストールするには、次のコマンドを入力します。

C:\> cpan install Win32::OLE

CPAN は、出力のページで画面を埋め尽くすでしょう。すべての単語を覚えておくことが絶対に重要なので、ズームしながら読んで記憶に留めてください。わかりました、そうではないかもしれません。ただし、何か重要な場合に備えて、Windows コマンド プロンプトのターミナル画面バッファーの高さを 300 行から 9999 行に変更することをお勧めします。

これを行うと、次のように表示されます。

CPAN: CPAN::SQLite loaded ok (v0.202)
CPAN: LWP::UserAgent loaded ok (v6.04)
CPAN: Time::HiRes loaded ok (v1.9725)
Fetching with LWP:
http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
CPAN: YAML::XS loaded ok (v0.38)
Fetching with LWP:
http://cpan.strawberryperl.com/modules/02packages.details.txt.gz
Fetching with LWP:
http://cpan.strawberryperl.com/modules/03modlist.data.gz
Database was generated on Tue, 10 Sep 2013 19:27:08 GMT
Updating database file ...

そして何度も...

大量の警告が表示されます:

OLE.xs:5674:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
OLE.xs:5676:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
OLE.xs:5678:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
OLE.xs:5680:71: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
OLE.xs:5683:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
....

それはコースに匹敵します。恐ろしい単語error が表示されない限り、問題ありません。

コンパイルすると、一連のテストが表示されます。

C:\perl\perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib',    'blib\arch')" t/*.t
t/1_nls.t ....... ok
t/2_variant.t ... ok
t/3_ole.t ....... ok
t/4_compat.t .... ok
t/5_unicode.t ... skipped: Unicode::String module not installed
t/6_event.t ..... ok
t/7_overload.t .. ok

okそしてskipped元気です。運が良ければ、次のことがわかります。

All tests successful.
Files=7, Tests=112, 241 wallclock secs ( 0.09 usr +  0.03 sys =  0.13 CPU)

次に、インストールを行い、完了です。

タイプ:

C:\> perldoc Win32::OLE

そして、そのモジュールがインストールされていれば、そのモジュールのPerl Docが得られるはずです。

次に、プログラムを実行して、すべてがうまくいくことを願っています。

于 2013-12-19T01:52:23.970 に答える