1

私はPerlを初めて使用します。

ソースファイルにそのような行があるperlアプリケーションをダウンロードしました:

 use PWING::Utils::Utils;

見た目どおりにファイルをインポートします。

Eclipse用のプラグインをダウンロードしました[Perl-Eclipse統合]。そのファイルをperlアプリとして起動しようとすると、インポートされたリソースが見つからないと表示されます。

ここで問題は、perlパッケージ構造がどのように見えるかということです。

この行は、次のようなカタログ構造が必要であることを意味します。

    PWING - 
          Utils - 
                 Utils.pm ?

ダウンロードしたアプリにはそのような構造が含まれていないようですが、どのように起動する必要がありますか?

4

2 に答える 2

3

perlmodドキュメントの状態

すべての Perl モジュール ファイルの拡張子は.pm. オペレーターはこれuseを想定しているため、引用符で詳しく説明する必要はありません"Module.pm".plこれは、新しいモジュールと古いファイルを区別するのにも役立ち.phます。プラグマとして機能していない限り、モジュール名も大文字になります。プラグマは実際にはコンパイラ ディレクティブであり、「プラグマティック モジュール」(または古典主義者の場合は「プラグマタ」) と呼ばれることもあります。

2 つのステートメント:

require SomeModule;
require "SomeModule.pm";

は 2 つの点で互いに異なります。最初のケースでは、モジュール名の二重コロン ( などSome::Module) は、システムのディレクトリ区切り記号 (通常は "/") に変換されます。

...

Perl パッケージは他のパッケージ名内にネストされる場合があるため、パッケージ名に::. しかし、そのパッケージ名をファイル名として直接使用すると、一部のシステムでは扱いにくい、または不可能なファイル名になります。したがって、モジュールの名前がたとえば の場合Text::Soundex、その定義は実際にはライブラリ ファイルText/Soundex.pmにあります。

特別な@INC配列には、モジュールを検索するディレクトリが含まれています。

@INC

この配列には、 、、またはコンストラクトがライブラリ ファイルを探す@INC場所のリストが含まれています。最初は、任意のコマンドライン スイッチへの引数で構成され、その後にデフォルトの Perl ライブラリが続きます。おそらく、現在のディレクトリを表す が続きます。( byまたは byのいずれかで汚染チェックが有効になっている場合は追加されません。) 実行時にこれを変更する必要がある場合は、プラグマを使用して、マシン依存のライブラリも適切にロードする必要があります。do EXPRrequireuse-I/usr/local/lib/perl".""."-T-tuse lib

use lib '/mypath/libdir/';
use SomeMod;
于 2010-07-12T12:13:47.103 に答える
0

Unixシステムでは、このファイルは次の形式のディレクトリにあります。

 lib/PWING/Utils/Utils.pm

しかし、問題は最上位ディレクトリ'lib'がどこにあるかを検出することです。

モジュールがシステムにインストールされている場合、Perlがモジュールを見つけることができる場所にモジュールが配置されます。

于 2010-07-12T11:14:06.097 に答える