CALLER |
Appelleur |
|---|---|
Perl |
Syntaxe
| caller |
| caller expression |
Paramètres
| Nom | Description |
|---|---|
| expression | Ce paramètre permet d'indiquer le nombre de paramètres retourner dans le tableau. |
Retour
| Valeur | Description |
|---|---|
| (...) | Ces valeurs sont un tableau de données. |
Description
Cette fonction demande le contexte d'appel.
Remarques
- Fonction utile pour le débogage : caller est très utilisée pour retrouver des informations sur l'appelant d'une fonction, comme le nom du fichier, la ligne, ou le nom du sous-programme. Cela la rend particulièrement utile pour générer des messages d'erreur enrichis, ou pour comprendre le chemin d'exécution d'un programme complexe.
- Retour contextuel sous forme de liste : La fonction retourne une liste de données contextuelles à propos de l'environnement d'appel. Cette liste peut contenir jusqu'à 12 éléments, selon la version de Perl, comme le nom du package, le nom du fichier, le numéro de ligne, et même des détails sur les arguments passés. Ces informations peuvent ensuite être utilisées pour la journalisation ou l'analyse dynamique.
- Paramètre d'expression pour la profondeur : Le paramètre facultatif permet de spécifier le niveau dans la pile d'appels (stack). Par exemple, caller(0) donne les infos sur l'appelant immédiat, caller(1) donne l'appelant du précédent, etc. Cette possibilité est essentielle pour analyser des appels récursifs ou des chaînes complexes de sous-routines.
- Retour en liste ou scalaire selon le contexte : Dans un contexte scalaire, caller retourne uniquement le nom du package appelant. Dans un contexte de liste, elle retourne un tableau avec plusieurs informations. Cela rend son comportement polyvalent mais potentiellement source de confusion si l'on ne fait pas attention au contexte d'évaluation.
- Très utilisée dans les modules et bibliothèques : De nombreux modules Perl utilisent caller pour déterminer où ils sont appelés, par exemple pour générer des erreurs au bon endroit, ou pour exporter des symboles dans le bon espace de noms. Cela permet de concevoir des interfaces plus intelligentes, capables de s'adapter à leur contexte d'utilisation.
- Peut aider à créer des enveloppes ou traceurs : caller est utile pour écrire des fonctions de traçage ou de journalisation personnalisées, voulant afficher ou enregistrer la provenance des appels. Par exemple, on peut l'utiliser pour afficher automatiquement la ligne ou le fichier depuis lequel une fonction a été appelée, ce qui facilite le diagnostic.
- Interaction avec wantarray et les prototypes : Lorsqu'elle est utilisée en combinaison avec wantarray ou @_, caller peut servir à reconstruire le contexte d'exécution complet d'un appel, y compris le mode de retour attendu. Cela permet de reproduire ou manipuler dynamiquement le comportement d'autres fonctions, comme dans les systèmes de journal de bord de hooks.
- Aucun effet de bord et faible coût d'exécution : caller est une fonction sans effet de bord et avec un coût faible, car elle ne modifie aucun état interne. Elle peut donc être utilisée sans danger dans de nombreux cas, y compris à des fins de débogage, sans ralentir de façon significative le script Perl.
Exemple
Voici un exemple permet de demander les informations de l'appelant à l'interpréteur de script :
on obtiendra un résultat semblable à celui-ci :
Paquet = mainNom du fichier = C:\Program Files (x86)\Perl Express\Debug\temp3.cgi
Ligne de la fonction d'appel = 10
Références
La Bible Micro Application HTML & Développement Web, Stefan Munz, Wolfgang Nefzger, 2003, ISBN: 2-7429-2898-7, page 1132
Dernière mise à jour : Dimanche, le 18 octobre 2015