3

我有兴趣在没有.pl
This: 的情况下获取正在运行的脚本的名称:my ($script) = $0 =~ /(.*)\.pl/;似乎有效。我想知道是否有另一种更标准的方法

4

3 回答 3

3

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

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
于 2013-10-19T20:30:07.807 回答
1

脚本名称在

print $0;

就像你写的..

如果您只想拥有没有 .pl 的名称

-i- 会这样做:

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

我认为选择这个或那个没有任何性能问题;)

见 perlvar

于 2013-10-19T19:29:13.697 回答
0

最后一个示例是如果您在没有路径的情况下运行程序。但是从 crontab /path/to/dir/script.pl

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

会给你

 /path/to/dir/script    
于 2017-03-22T18:56:58.620 回答