Gần đây tôi đã viết một kịch bản Perl mới để giết các quy trình dựa trên tên hoặc tên người dùng và mở rộng nó bằng cách sử dụng Lớp để tôi có thể sử dụng lại mã quy trình trong các chương trình khác. Bố cục hiện tại của tôi là -Kịch bản Perl của tôi có thể tìm thấy mô-đun của nó trong cùng một thư mục như thế nào?
/home/mutew/src/prod/pskill <-- Perl script
/home/mutew/src/prod/Process.pm <-- Package to handle process descriptions
Tôi đã thêm ~/src/prod vào biến $ PATH để truy cập tập lệnh từ bất kỳ đâu. Khi chạy tập lệnh từ bất kỳ thư mục nào khác ngoài thư mục thường trú của nó dẫn đến "Không thể định vị Process.pm trong @INC" (điều này có thể hiểu được ngoài các thư mục được chia sẻ trong/usr, @INC chỉ bao gồm thư mục hiện tại - '.'). Một giải pháp mà tôi đã sử dụng là chỉ thị lib sử dụng như vậy -
use lib '/home/mutew/src/prod';
nhưng đây là vấn đề về tính di động chính. Bất kỳ giải pháp nào cũng sẽ cho phép tôi xuất tập lệnh sang các hệ thống khác mà không có và thay đổi?
EDIT
- tôi đã chọn câu trả lời 'depesz' là đúng vì sự đơn giản và cốt lõi sử dụng mô-đun của nó.
- câu trả lời của brian d foy mặc dù đề xuất các phương pháp khác để thực hiện tương tự (TMTOWTDI), đóng góp của mình trong perlfaq8 khiến câu hỏi này hoàn toàn thừa.
có thể chỉ là cài đặt của tôi, nhưng nếu cả hai tệp đều nằm trong cùng một thư mục, tôi chỉ đơn giản là "sử dụng FILENAME.pm". Sau đó, "my $ newVar = PACKAGENAME-> new();" cho bất kỳ lập trình đối tượng nào. –
Wow điều này sẽ dễ dàng hơn rất nhiều trong perl hơn thế này! Làm cho những điều dễ dàng dễ dàng, vv .. –