2012-11-26 22 views
6

Tôi đang tạo mô-đun của riêng mình, cho phép gọi nó là X::Y. Tất nhiên, mô-đun sẽ có trong tệp X/Y.pm.Mô-đun perl có thể tìm ra con đường riêng của nó như thế nào?

Cho phép nói Y cần gọi một chương trình bên ngoài, prog. Lý tưởng nhất là tôi chỉ muốn đặt prog vào X, vì vậy tôi có thể chạy X/prog. Tôi không muốn có đường dẫn đầy đủ của hardcode X/prog và để mô-đun hoạt động bất kể tập hợp thư mục hoạt động hiện tại.

Làm cách nào tôi có thể tìm thấy đường dẫn đầy đủ của mô-đun từ bên trong mô-đun? Hoặc là có một cách tốt hơn để làm điều này?

Trả lời

9

Đường dẫn đầy đủ đến tệp nguồn hiện đang được thực hiện được cung cấp bởi Perl's __FILE__ chữ đặc biệt.

Tuy nhiên tôi muốn xem chương trình bên ngoài được cài đặt ở nơi thông thường, và đường dẫn ở đó được mã hóa dưới dạng hằng số trong mã Perl hoặc được bao gồm trong biến môi trường PATH.

-1

Khi mô-đun được tải, đường dẫn của nó nằm trong biến số toàn cầu %INC. Để nhìn nó lên, bạn cần phải làm một chuyển đổi đơn giản:

  1. thay đổi :: trong tên gói để /
  2. thêm .pm

Vì vậy, để tìm vị trí của module X::Y, bạn sẽ nhìn vào $INC{"X/Y.pm"}.

4

Borodin đã trả lời câu hỏi nhưng một số thông tin liên quan:

FindBin - tìm thấy thư mục mà kịch bản được chạy từ (sử dụng trong kịch bản gốc hoặc trong một gói nạp bởi nó)

Neil Bower's CPAN modules for getting a module's path - đánh giá chi tiết các mô-đun để tìm đường dẫn của mô-đun khác.