如何获取我执行的Perl脚本的绝对路径?

3

我想获取执行的perl脚本的绝对路径,例如:

当前工作目录为/home/Program/A/B,/home/Program/A目录下有一个perl脚本/home/Program/A/sort.pl

当我在/home/Program/A/B目录下输入perl ../sort.pl时,我想要获取sort.pl的绝对路径,即/home/Program/A/sort.pl

我希望无论当前工作目录是什么,都能够获取perl脚本的绝对路径。如何实现?

谢谢。


1
你想让脚本能够获取自己的路径吗?你想让shell告诉你脚本在哪里吗?你想能够在不必提供路径的情况下运行脚本吗? - antiduh
@antiduh 我知道我应该给出路径以便运行脚本。但是当我使用间接路径指示脚本所在位置时,我想获取它的绝对路径... - user2131116
1
与此问题可能重复:如何获取正在执行的 Perl 脚本的完整路径? - EvilTeach
"history" shell 命令可以告诉你运行过哪些脚本,但它只提供用户键入的命令,而不提供工作目录或绝对名称(如果只使用相对名称)。然而,由于您知道部分脚本名称,因此应该可以使用 "which"、"locate" 或 "find" shell 命令再次找到这些脚本。 - Paul
2个回答

7
以下是您需要的内容:

以下是您想要的:

use FindBin qw($RealScript);

那会给你提供完整路径,并修复所有符号链接。

4

Cwd模块有一个很有用的函数可以实现这个功能:

use Cwd qw(abs_path);
print abs_path(__FILE__), "\n";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接