如何获取正在运行的Perl脚本的名称

neb*_*lus 45 perl

我怎样才能获得脚本的名称?

例如,我有一个名为Perl的脚本XXX.pl.该文件包含:

$name = #some function that obtains the script's own name
print $name;
Run Code Online (Sandbox Code Playgroud)

输出:

XXX.pl
Run Code Online (Sandbox Code Playgroud)

我想将其比作获取脚本目录的CWD函数.我需要一个获取脚本名称的函数.

小智 77

可以在$0变量中找到正在运行的程序的名称:

print $0;
Run Code Online (Sandbox Code Playgroud)

man perlvar为其他特殊变量.


mkb*_*mkb 43

use File::Basename;
my $name = basename($0);
Run Code Online (Sandbox Code Playgroud)

PS.getcwd() 和朋友们不给你脚本的目录!他们为您提供工作目录.如果脚本在你的PATH中而你只是按名称而不是通过它的完整路径来调用它,那么getcwd()就不会按照你说的去做.你想要dirname($0)(dirname也在File::Basename).


msb*_*msb 10

您可能也有兴趣了解更多关于__FILE__,并且可能__LINE__,它为您提供当前行,并且我经常一起使用.

如果您希望将其用于调试目的,您可能还需要了解" warn"," Carp"," caller".


Win*_*ith 5

查看模块FindBin,它是核心 Perl 发行版的一部分。它导出您正在寻找的变量

  EXPORTABLE VARIABLES
        $Bin         - path to bin directory from where script was invoked
        $Script      - basename of script from which Perl was invoked
        $RealBin     - $Bin with all links resolved
        $RealScript  - $Script with all links resolved
Run Code Online (Sandbox Code Playgroud)