如何找出在使用';运行脚本时使用的是哪种perl/usr/bin/env perl';?

如何找出在使用';运行脚本时使用的是哪种perl/usr/bin/env perl';?,perl,Perl,用一种像《代码》一样的方式/usr/bin/env perl如何使脚本可以访问我正在运行脚本的perl? (就像在perl-E'say$ENV{{u}'命令行中一样)。使用。从中,可以使用$^X变量 $ perl -e 'print $^X, "\n";' /usr/bin/perl5.12.4 这是人们通常会看到的 $ perl -E'say $^X;' /home/ikegami/usr/perlbrew/perls/5.14.2t/bin/perl 不幸的是,它在某些系统上不包含绝对路

用一种像《代码》一样的方式/usr/bin/env perl如何使脚本可以访问我正在运行脚本的perl?
(就像在
perl-E'say$ENV{{u}'
命令行中一样)。

使用。

从中,可以使用
$^X
变量

$ perl -e 'print $^X, "\n";'
/usr/bin/perl5.12.4
这是人们通常会看到的

$ perl -E'say $^X;'
/home/ikegami/usr/perlbrew/perls/5.14.2t/bin/perl
不幸的是,它在某些系统上不包含绝对路径。(我不知道为什么。可能是因为这些系统上没有准确的信息?)如果
$^X
不包含绝对路径,那么
find\u perl\u解释器
很难找到绝对路径

$ perl -MProbe::Perl -E'say Probe::Perl->find_perl_interpreter();'
/home/ikegami/usr/perlbrew/perls/5.14.2t/bin/perl

当shell是
bash
时,它可以很好地工作;当shell是
ksh
时,当我键入
perl-e'say$^X'
时,我只打印了
perl
(在MacOS X 10.7.2上,没有
/proc
文件系统,更不用说
/proc/self/exe
)。这并不是说你错了;只是为了表明这里潜伏着一些平台依赖关系。是的,在任何地方都不起作用。
perlvar
中的文档提供了大量信息,说明了它可能会以各种方式出现故障/无法正常工作。我不知道有什么东西能更好地跨平台工作。@daxim:你为什么不把它作为一个答案呢?应该比在平台/环境上使用普通的
$^X
做得更好,因为这是不完整的。