7 votes

Trouver quels scripts appellent un paquetage perl

Je ne suis pas un programmeur perl, donc désolé si c'est évident. Il y a un paquetage perl sur un système sur lequel je travaille et que je veux modifier, mais je ne sais pas quels autres programmes l'utilisent. Je peux dire qu'au moins trois tâches cron l'utilisent parce que j'ai mis ces lignes dans le fichier :

open(STDOUT, '>', "/var/log/SS_logs/packageAlert.log");
open(STDERR, '>', "/var/log/SS_logs/packageAlert.error.log");

print "\nThe program packageAlert.pm  is running on " . `date` . "\n";

et 10 minutes plus tard, j'ai obtenu trois lignes dans mon journal. Il se peut qu'il y en ait d'autres qui l'appellent tous les jours ou toutes les semaines et qu'il soit également appelé dans des pages web.

J'ai recherché les occurrences du paquet avec grep -R "SS::alert" . Il y a donc une vingtaine de scripts et de pages web qui peuvent utiliser le paquet.

Existe-t-il une fonction que je puisse appeler pour savoir quel fichier a appelé le paquet ?

3voto

brian d foy Points 71781

En appelant peut vous indiquer le fichier qui vous a appelé (c'est la même chose qui permet aux modulinos de fonctionner).

use v5.10;
say "Loading " . __FILE__ . " at " . localtime();

use File::Spec::Functions qw(rel2abs);
my $calling_file = rel2abs( (caller(0))[1] );

say "Loaded by $calling_file";
1;

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