Есть ли способ получить абсолютный путь к исполняемому файлу Perl для текущего процесса?Получение абсолютного пути к perl исполняемому для текущего процесса
$^X предоставит мне исполняемое имя Perl, но в документе указано, что он иногда будет относительным путем, и это, похоже, верно для OS X, например.
ExtUtils :: MakeMaker, кажется, немного магии, чтобы найти абсолютный путь, так как Makefile он генерирует на моем OS X содержит
PERL = /usr/local/bin/perl
FULLPERL = /usr/local/bin/perl
, но я понятия не имею, как она делает это, или магия легкодоступными для других.
EDIT: Спасибо Бородин за сообщение $Config{perlpath}
. Grepping для этого в ExtUtils, я нашел этот лакомый кусочек в ExtUtils :: MM_Unix :: _ fixin_replace_shebang, который, как я полагаю, использует MakeMaker для замены #! Perl правильной строкой shebang.
if ($Config{startperl} =~ m,^\#!.*/perl,) { $interpreter = $Config{startperl}; $interpreter =~ s,^\#!,,; } else { $interpreter = $Config{perlpath}; }
Это не будет работать во многих случаях. Часто '$^X' просто говорит' perl', в этом случае 'rel2abs' даст вам путь к CWD, что, вероятно, неверно. – friedo