Perl-使用相对路径从另一个脚本调用脚本

Perl-使用相对路径从另一个脚本调用脚本,perl,Perl,我有一个调用其他Perl脚本的Perl脚本,我使用这一行: system($^X, "script.pl", @ARGV); 所有脚本都存在于同一个文件夹中,但我想从另一个文件夹调用主脚本,这意味着脚本位于D:\TEST\Perl下,但我从C:\打开命令行,并从该位置调用主脚本 可能是一个愚蠢的问题,但是我如何调用子脚本,使其位置相对于主脚本? 我真的需要使用这个模块吗?哪一个?听起来你想要这个模块 您可以先使用chdir?我想您需要FindBin。但我也认为您可能存在XY问题。在程序中的一

我有一个调用其他Perl脚本的Perl脚本,我使用这一行:

system($^X, "script.pl", @ARGV); 
所有脚本都存在于同一个文件夹中,但我想从另一个文件夹调用主脚本,这意味着脚本位于D:\TEST\Perl下,但我从C:\打开命令行,并从该位置调用主脚本

可能是一个愚蠢的问题,但是我如何调用子脚本,使其位置相对于主脚本? 我真的需要使用这个模块吗?哪一个?

听起来你想要这个模块


您可以先使用
chdir
?我想您需要
FindBin
。但我也认为您可能存在
XY问题
。在程序中的一个位置列出可调用脚本及其完整路径(使用
FindBin
作为“主”脚本)有什么不对?
$RealBin
$Bin
相同,只是如果有人创建脚本的符号链接,它也可以工作<因此,应该使用code>$RealBin而不是
$Bin
@ikegami我同意有必要指出
$Bin
$RealBin
之间的区别。我认为我们对这里的情况了解不够,不能说哪种方法最好,这是没有意义的
$RealBin
添加了对符号链接的支持,而不会带走任何东西,因此
$RealBin
始终是最好的使用方法。
use FindBin '$Bin'; # $Bin will contain the directory containing the executable file

# Then, later in your code
system($^X, "$Bin/script.pl", @ARGV);