1

perl スクリプトを実行して、さまざまな UNIX サーバーに展開および実行されるシステム情報を収集する必要があります。

現在、私はそれを書いてテストしていますが、このエラーが発生しています。

@INC で XML/DOM.pm が見つかりません (@INC には次が含まれます: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl / usr/lib64/perl5 /usr/share/perl5 .) test.pl 行 7 で。 BEGIN が失敗しました -- test.pl 行 7 でコンパイルが中止されました。

したがって、私は単純に Perl の一部である XML::DOM を使用していますが、5.10.1 であるこの特定のサーバーのこのバージョンには使用できません。

とにかく、このスクリプトの要件である .pl 拡張子を保持しながら、スクリプトとパッケージモジュールを作成して設計する方法はありますか?

4

3 に答える 3

1

モジュールがコンパイル済みライブラリを必要としない場合は、モジュールから.plファイルにテキストをコピーすることでそれらを含めることができます。それは恐ろしいハックですが、うまくいくはずです。

Perlモジュールには、名前を付けるパッケージステートメントが含まれている必要があります。メインプログラムセクションに到達したらpackage main;、独自のステートメントが必要になります。

于 2012-12-10T16:48:49.063 に答える
1

libamon が示唆するようにプラグマを使用する代わりに、perlbrewcpanminusをインストールすることを検討してください。これは、モジュールを追加および/または更新するために連携して動作するように設計されています。

perlbrew#!/usr/bin/env perlは、Perl スクリプトでインタープリター行として指定し、必要なPerl のローカル バージョンを見つけるために のような行を追加することで利用できるように設計されていsource ~/perl5/perlbrew/etc/bashrcます。${HOME}/.bash_profile

于 2012-12-10T22:56:29.767 に答える
1

モジュールを任意のディレクトリに配置し、このディレクトリをpragmaを介しlibモジュールの検索に含めることができます。モジュールFoo::Barはファイル内にある必要があり、モジュール ディレクトリにMY-ROOT/Foo/Bar.pmあるとは限らないことに注意してください。MY-ROOT/Bar.pmMY-ROOT

use lib 'MY-ROOT';
use Foo::Bar;

ただし、これは純粋な Perl モジュールでのみ機能し、XS をサポートしていません。

于 2012-12-10T17:02:30.750 に答える