Is there a way to get an absolute path to the Perl executable for the current process?
$^X
will give me the Perl executable name, but the doc states that it will sometimes be a relative path, and this seems to be true on OS X for example.
ExtUtils::MakeMaker
seems to have some magic to find the absolute path, since the Makefile it generates on my OS X contains
PERL = /usr/local/bin/perl
FULLPERL = /usr/local/bin/perl
but I have no idea how it does this or whether the magic is readily accessible to others.
EDIT: Thanks Borodin for the $Config{perlpath}
tip. Grepping for this in ExtUtils
, I found this tidbit in ExtUtils::MM_Unix::_fixin_replace_shebang
, which I guess is what MakeMaker uses to replace #!perl
with the correct shebang line.
if ( $Config{startperl} =~ m,^#!.*/perl, ) {
$interpreter = $Config{startperl};
$interpreter =~ s,^#!,,;
}
else {
$interpreter = $Config{perlpath};
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…