如何获取没有扩展名的正在运行的脚本的名称

时间:2013-10-19 18:34:29

标签: perl

我有兴趣在没有.pl的情况下获取正在运行的脚本的名称 这个:my ($script) = $0 =~ /(.*)\.pl/;似乎有效。我想知道这个

是否还有另一种更标准的方法

3 个答案:

答案 0 :(得分:3)

使用File::Basename中的fileparse。这是一个核心模块,因此您的发行版始终可以使用它。

use File::Basename;
my ( $name, $path, $suffix ) = fileparse( $0, qr{\.[^.]*$} );
print "NAME=$name\n";
print "PATH=$path\n";
print "SFFX=$suffix\n";

找到suffix的正则表达式查找一个点,后跟任何不是点,零次或多次的东西,锚定到字符串的末尾。

如果正在运行的脚本为/mypath/myfile.pl,则返回:

NAME=myfile
PATH=/mypath/
SFFX=.pl

答案 1 :(得分:1)

脚本名称在

print $0;
像你写的那样..

如果你想只有没有.pl

的名字

-i会这样做:

my $script = $0;
$script =~ s/\.pl//;

我不认为这是选择这个或那个的任何性能问题;)

see perlvar

答案 2 :(得分:0)

最后一个例子是你运行没有路径的程序。但是来自crontab     /path/to/dir/script.pl

my $script = $0;   
$script =~ s/\.pl//;   

会给你

 /path/to/dir/script