53 votes

Comment obtenir le nom du script Perl en cours d'exécution

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;
 

Production:

 XXX.pl
 

J'aimerais 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. Merci!

86voto

Zac Sprackett Points 416

Le nom du programme en cours d'exécution se trouve dans la variable $0 :

 print $0;
 

man perlvar pour d'autres variables spéciales.

50voto

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

PS. getcwd() et vos amis ne vous donnent pas le répertoire du script! Ils vous donnent le répertoire de travail. Si le script est dans votre PATH et que vous l'appelez simplement par son nom, et non par son chemin complet, alors getcwd() ne fera pas ce que vous dites. Vous voulez dirname($0) (le nom du répertoire est également en File::Basename ).

12voto

msb Points 406

Vous pourriez également être intéressé à en savoir plus sur __FILE__ , et peut-être __LINE__ , ce qui vous donne la ligne actuelle et j'utilise fréquemment ensemble.

Si vous le souhaitez à des fins de débogage, vous pouvez également en savoir plus sur " warn ", " Carp ", " caller ".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X