¿Hay alguna forma de obtener una ruta absoluta al ejecutable de Perl para el proceso actual?Obteniendo la ruta absoluta al ejecutable perl para el proceso actual
$^X me dará el nombre del ejecutable Perl, pero el documento afirma que a veces va a ser una ruta relativa, y esto parece ser cierto en OS X, por ejemplo.
ExtUtils :: MakeMaker parece tener un poco de magia para encontrar la ruta absoluta, ya que el Makefile se genera en mi OS X contiene
PERL = /usr/local/bin/perl
FULLPERL = /usr/local/bin/perl
pero no tengo ni idea de cómo se hace esto o si la magia es fácilmente accesible para otros.
EDIT: Gracias por la punta Borodin $Config{perlpath}
. Ampliando para esto en ExtUtils, encontré este tidbit en ExtUtils :: MM_Unix :: _ fixin_replace_shebang, que creo que es lo que MakeMaker usa para reemplazar #! Perl con la línea de shebang correcta.
if ($Config{startperl} =~ m,^\#!.*/perl,) { $interpreter = $Config{startperl}; $interpreter =~ s,^\#!,,; } else { $interpreter = $Config{perlpath}; }
Eso no va a funcionar en muchos casos. A menudo '$^X' simplemente dice' perl', en cuyo caso 'rel2abs' le dará la ruta a la CWD, lo cual probablemente sea incorrecto. – friedo