2012-11-26 12 views
6

私自身のモジュールを作成していますが、それをX::Yと呼ぶことができます。もちろん、モジュールはファイルX/Y.pmにあります。どのようにしてperlモジュールが独自のパスを見つけることができますか?

Yは外部プログラムprogを呼び出す必要があります。理想的にはprogXに入れたいので、X/progを実行できます。私はハードコードX/progのフルパスを持っておらず、モジュールが現在の作業ディレクトリに関係なく動作するようにしたいと思います。

モジュール内部からモジュールのフルパスを見つけるにはどうすればよいですか?それとももっと良い方法がありますか?

答えて

9

現在実行中のソースファイルへのフルパスは、Perlの__FILE__特別リテラルによって提供されます。

しかし、通常どおりの場所に外部プログラムがインストールされていて、そのパスがPerlコードの定数としてコード化されているか、PATH環境変数に含まれているのが好きです。

-1

モジュールがロードされると、パスはグローバル変数%INCになります。あなたが希望、モジュールX::Yの場所を見つけることは.pm

追加/

  • にパッケージ名で

    1. 変更:::それを調べるには、簡単な変換を行う必要があります$INC{"X/Y.pm"}をご覧ください。 - スクリプトは

      Neil Bower's CPAN modules for getting a module's path(スクリプト自体の中またはそれによってロードされたパッケージ内での使用)から実行されたディレクトリを検索します - 詳細なレビューを

      FindBin

  • 4

    ボロディンは疑問が、いくつかの関連情報を答え別のモジュールのパスを見つけるためのモジュールの数。

    関連する問題