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

我怎样才能得到脚本的名字?

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

 $name = #some function that obtains the script's own name print $name; 

输出:

 XXX.pl 

我想把它比作获得脚本目录的CWD函数。 我需要一个获取脚本名称的函数。

正在运行的程序的名称可以在$0variables中find:

 print $0; 

其他特殊variables的人perlvar 。

 use File::Basename; my $name = basename($0); 

PS。 getcwd() 和朋友不会给你脚本的目录! 他们给你的工作目录。 如果脚本在你的PATH中,而你只是通过名字调用它,而不是完整的path,那么getcwd()就不会做你说的话。 你想要dirname($0) (dirname也在File::Basename )。

您可能还有兴趣了解更多关于__FILE__ ,也可能有__LINE__ ,这会给您提供当前的线路,我经常一起使用。

如果你想要这个debugging的目的,你可能还想了解“ warn ”,“ Carp ”,“ caller ”。

查看模块FindBin ,作为核心Perl发行版的一部分。 它导出你正在寻找的variables

  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