Как получить имя запущенного Perl-скрипта - PullRequest
43 голосов
/ 05 января 2011

Как я могу получить имя скрипта?

Например, у меня есть Perl-скрипт с именем XXX.pl.Этот файл содержит:

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

Вывод:

XXX.pl

Я хотел бы сравнить это с функцией CWD, которая получает каталог сценариев.Мне также нужна функция, которая получает имя скрипта.

Ответы [ 4 ]

73 голосов
/ 05 января 2011

Имя запущенной программы можно найти в переменной $0:

print $0;

man perlvar для других специальных переменных.

42 голосов
/ 05 января 2011
use File::Basename;
my $name = basename($0);

PS. getcwd() и друзья не дают вам каталог скрипта! Они дают вам рабочий каталог. Если скрипт находится в вашем PATH и вы просто называете его по имени, а не по его полному пути, то getcwd() не будет делать то, что вы говорите. Вы хотите dirname($0) (dirname также находится в File::Basename).

9 голосов
/ 30 апреля 2014

Вам также может быть интересно узнать больше о __FILE__ и, возможно, __LINE__, который дает вам текущую строку, которую я часто использую вместе.

Если вы хотите это для целей отладки, вы можететакже хочу узнать о "warn", "Carp", "caller".

2 голосов
/ 21 октября 2015

Извлечь модуль FindBin , часть основного дистрибутива Perl. Он экспортирует переменные, которые вы ищете

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...