我有兴趣在没有.pl
的情况下获取正在运行的脚本的名称
这个:my ($script) = $0 =~ /(.*)\.pl/;
似乎有效。我想知道这个
答案 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//;
我不认为这是选择这个或那个的任何性能问题;)
答案 2 :(得分:0)
最后一个例子是你运行没有路径的程序。但是来自crontab /path/to/dir/script.pl
my $script = $0;
$script =~ s/\.pl//;
会给你
/path/to/dir/script