2012-11-26 43 views
6

我正在創建自己的模塊,我們稱之爲X::Y。當然,該模塊將在文件X/Y.pm中。perl模塊如何找到自己的路徑?

可以說Y需要調用外部程序,prog。理想情況下,我只想將prog放入X,所以我可以運行X/prog。我想沒有硬編碼X/prog的完整路徑,並且模塊不管當前的工作目錄集如何工作。

如何從模塊內部找到模塊的完整路徑?還是有更好的方法來做到這一點?

回答

9

當前正在執行的源文件的完整路徑由Perl的__FILE__特殊字面量提供。

但是我寧願看到外部程序安裝在通常情況下的位置,那裏的路徑或者在Perl代碼中編碼爲常量,或者包含在PATH環境變量中。

-1

加載模塊後,其路徑位於全局變量%INC中。爲了看它,你需要做一個簡單的換算:

  1. 變化::在包名/
  2. 追加.pm

因此,要找到模塊X::Y的位置,你會請看$INC{"X/Y.pm"}