Có cách nào để nhận đường dẫn tuyệt đối tuyệt đối đến tệp thực thi Perl cho quy trình hiện tại không?Nhận đường dẫn tuyệt đối để thực thi perl cho quy trình hiện tại
$^X sẽ cấp cho tôi tên thực thi Perl, nhưng tài liệu tuyên bố rằng đôi khi nó sẽ là đường dẫn tương đối và điều này có vẻ đúng trên OS X chẳng hạn.
ExtUtils :: MakeMaker dường như có một số ma thuật để tìm đường dẫn tuyệt đối, vì nó tạo ra Makefile trên OS X của tôi chứa
PERL = /usr/local/bin/perl
FULLPERL = /usr/local/bin/perl
nhưng tôi không có ý tưởng làm thế nào nó thực hiện điều này hay điều kỳ diệu là dễ dàng tiếp cận với người khác.
CHỈNH SỬA: Cảm ơn Borodin về mẹo $Config{perlpath}
. Tham lam cho điều này trong ExtUtils, tôi thấy tidbit này trong ExtUtils :: MM_Unix :: _ fixin_replace_shebang, mà tôi đoán là những gì MakeMaker sử dụng để thay thế #! Perl với dòng shebang chính xác.
if ($Config{startperl} =~ m,^\#!.*/perl,) { $interpreter = $Config{startperl}; $interpreter =~ s,^\#!,,; } else { $interpreter = $Config{perlpath}; }
Điều đó sẽ không hoạt động trong nhiều trường hợp. Thường '$^X' chỉ nói' perl' trong trường hợp 'rel2abs' sẽ cung cấp cho bạn đường dẫn đến CWD, điều này có thể là sai. – friedo