Comment puis-je obtenir le nom du script?
Par exemple, j'ai un script Perl avec le nom XXX.pl
. Ce fichier contient:
$name = #some function that obtains the script's own name
print $name;
Sortie:
XXX.pl
Je voudrais comparer cela à la fonction CWD qui obtient le répertoire des scripts. J'ai besoin d'une fonction qui obtient également le nom du script.
Le nom du programme en cours d'exécution se trouve dans le $0
variable:
print $0;
man perlvar pour les autres variables spéciales.
use File::Basename;
my $name = basename($0);
PS. getcwd()
et amis ne vous donne pas le répertoire du script! Ils vous donnent le répertoire de travail. Si le script se trouve dans votre PATH et que vous l'appelez simplement par son nom, pas par son chemin complet, alors getcwd()
ne fera pas ce que vous dites. Vous voulez dirname($0)
(dirname est également dans File::Basename
).
Vous pourriez également être intéressé à en savoir plus sur __FILE__
, et éventuellement __LINE__
, qui vous donne la ligne actuelle et que j'utilise fréquemment ensemble.
Si vous le souhaitez à des fins de débogage, vous pouvez également en savoir plus sur "warn
", "Carp
", "caller
".
Consultez le module FindBin , une partie de la distribution Perl de base. Il exporte les variables que vous recherchez
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