小编典典

如何获取正在执行的 Perl 脚本的完整路径?

all

我有 Perl 脚本,需要在执行期间确定脚本的完整路径和文件名。我发现,根据您调用脚本的方式,脚本会有所不同,有时$0包含.
因为工作目录也可能会有所不同,所以我想不出一种可靠地获取脚本的方法。fullpath+filename``filename``fullpath+filename

有人有解决方案吗?


阅读 84

收藏
2022-08-07

共1个答案

小编典典

有几种方法:

  • $0是 POSIX 提供的当前正在执行的脚本,如果脚本位于或低于 CWD,则相对于当前工作目录
  • 此外,cwd()getcwd()abs_path()模块提供,Cwd并告诉您从何处运行脚本
  • 该模块FindBin提供了$Bin&$RealBin变量,这些变量 通常 是执行脚本的路径;该模块还提供$Script&$RealScript是脚本的名称
  • __FILE__是 Perl 解释器在编译期间处理的实际文件,包括其完整路径。

我已经看到前三个($0Cwd模块和FindBin模块
)在壮观的情况下失败mod_perl,产生无价值的输出,例如'.'或空字符串。在这样的环境中,我使用模块__FILE__并从中获取路径File::Basename

use File::Basename;
my $dirname = dirname(__FILE__);
2022-08-07