J'ai un script Perl (programme autonome) qui contient certains sous-marins que j'aimerais réutiliser dans d'autres scripts. En raison des limitations de l'environnement d'exécution, je ne peux pas déplacer les fonctions vers un fichier .pm
commun.Script Perl utilisable en tant que programme et en tant que module
Est-il possible de faire la différence si le script a été exécuté en tant que programme autonome ou il était require
ed/ed do
par un autre script?
La seule chose que je pouvais trouver était d'utiliser caller
au niveau supérieur: programme autonome n'a pas appel alors que quand require
ed caller
montre qui a fait charger le module. Y a-t-il une meilleure solution?
J'ai posté la réponse ci-dessous, mais si vous pouviez élaborer sur les "limitations de l'environnement d'exécution", peut-il y avoir des façons de contourner ces limitations qui vous permettraient d'utiliser les modules appropriés? Thx – DVK
@DVK: Je suis vraiment content de votre réponse. (Ni ma syntaxe de caller() check est aussi belle que dans votre réponse.) En ce qui concerne la limitation. Vraiment bête: je ne peux pas ajouter un autre module non exécutable au répertoire car il est analysé pour les fichiers et tous les noms de fichiers ont une signification particulière. L'ajout de .pm y casse d'autres scripts que je ne suis pas autorisé à modifier. – Dummy00001
Selon @FM, ma question est essentiellement un dup de http://stackoverflow.com/questions/1131304/ – Dummy00001