Подтвердить что ты не робот

Как получить имя Perl script, которое запущено

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

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

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

Вывод:

XXX.pl

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

4b9b3361

Ответ 1

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

print $0;

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

Ответ 2

use File::Basename;
my $name = basename($0);

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

Ответ 3

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

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

Ответ 4

Откажитесь от модуля 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