Ответ 1
Имя текущей программы можно найти в переменной $0
:
print $0;
man perlvar для других специальных переменных.
Как я могу получить имя script?
Например, у меня есть Perl script с именем XXX.pl
. Этот файл содержит:
$name = #some function that obtains the script own name
print $name;
Вывод:
XXX.pl
Я хотел бы упомянуть это для функции CWD, которая получает каталог скриптов. Мне нужна функция, которая также получает имя script.
Имя текущей программы можно найти в переменной $0
:
print $0;
man perlvar для других специальных переменных.
use File::Basename;
my $name = basename($0);
PS. getcwd()
и друзья не предоставляют вам каталог script! Они дают вам рабочий каталог. Если script находится в вашем PATH, и вы просто вызываете его по имени, а не по его полному пути, то getcwd()
не будет делать то, что вы говорите. Вы хотите dirname($0)
(имя dirname также находится в File::Basename
).
Вам также может быть интересно узнать больше о __FILE__
и, возможно, __LINE__
, который даст вам текущую строку, и я часто использую вместе.
Если вы хотите это для целей отладки, вы также можете узнать о "warn
", "Carp
", "caller
".
Откажитесь от модуля 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