如何获取正在运行的Perl脚本的名称
我怎样才能得到脚本的名字?
例如,我有一个名为XXX.pl
的Perl脚本。 这个文件包含:
$name = #some function that obtains the script's own name print $name;
输出:
XXX.pl
我想把它比作获得脚本目录的CWD函数。 我需要一个获取脚本名称的函数。
正在运行的程序的名称可以在$0
variables中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