Một số nền tảng ngắn:
Thật không may, API Unix không cung cấp một chương trình đang chạy với đường dẫn đầy đủ đến tệp thực thi. Trong thực tế, chương trình thực thi của bạn có thể cung cấp bất cứ điều gì nó muốn trong trường thường cho chương trình của bạn biết nó là gì. Có, như tất cả các câu trả lời chỉ ra, các phương pháp phỏng đoán khác nhau để tìm kiếm các ứng cử viên có khả năng. Nhưng không có gì ngắn gọn khi tìm kiếm toàn bộ hệ thống tập tin sẽ luôn hoạt động và thậm chí điều đó sẽ thất bại nếu thực thi được di chuyển hoặc loại bỏ.
Nhưng bạn không muốn Perl thực thi, đó là những gì thực sự đang chạy, nhưng kịch bản mà nó đang thực thi. Và Perl cần biết kịch bản ở đâu để tìm thấy nó. Nó lưu trữ cái này trong __FILE__
, trong khi $0
là từ API Unix. Đây vẫn có thể là một đường dẫn tương đối, vì vậy hãy lấy gợi ý của Mark và chuẩn hóa nó vớiFile::Spec->rel2abs( __FILE__ );