web-dev-qa-db-fra.com

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;

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.

45
nebulus

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.

77
Zac Sprackett
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).

43
mkb

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".

10
msb

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
3
Winston Smith