Perl特殊变量全解析
1. Perl可执行文件相关变量
在Perl中,$^X代表用于执行当前Perl副本的名称,它的值取决于主机操作系统,可能是Perl程序文件的相对或绝对路径名,也可能是用于调用Perl的字符串而非文件路径名。大多数操作系统允许调用不在PATH环境变量中的程序,所以不能保证$^X的值在PATH中。对于VMS系统,其值可能包含版本号,也可能不包含。
通常可以使用$^X的值重新调用当前正在运行的相同Perl副本,示例代码如下:
@first_run = `$^X -le "print int rand 100 for 1..100"`;不过,并非所有操作系统都支持命令的分叉或输出捕获,因此上述代码可能不具有可移植性。
需要注意的是,将$^X的值用作文件路径名并不安全,因为某些操作系统在调用命令时不要求使用可执行文件的强制后缀。若要将$^X的值转换为路径名,可以使用以下代码:
# Build up a set of file names (not command names). use Config; my $this_perl = $^X; if ($^O ne 'VMS') { $this_perl .= $Config