Comment un script Perl détecter si elle est en cours d'exécution dans le Komodo IDE?
-
19-09-2019 - |
Question
Une façon j'ai trouvé est de vérifier si le Débogueur Perl est « chargé » en vérifiant défini ($ DB :: single) et en supposant Komodo est actif, si $ DB :: single est défini ..
Mais cela pourrait aussi signifier que le script est en cours d'exécution légitimement comme perl -d sous le débogueur "autonome".
#!/usr/local/ActivePerl-5.10/bin/perl
use strict;
use warnings;
use feature qw/say switch/;
# detect debugger ..
SayDebugerStatus();
sub SayDebugerStatus {
print "Debugger ";
given ($DB::single) {
when (undef) {
say "not loaded.";
}
when (0) {
say "loaded but inactive";
}
default {
say "loaded and active";
}
}
return defined($DB::single) ? 1:0;
}
zakovyrya suggestion conduit à:
if ( grep( /.*Komodo\ IDE\.app/g, values %INC) ){
say "Komodo is running"
} else {
say "Komodo is not running"
};
Mais est-il une autre façon?
routine UPDATE aujourd'hui mon isKomodo () a échoué. Certaines enquête a montré, que cela a changé mes paramètres de chemin global de « long » à des noms « courts » (ce qui est sous Windows) .. il y a nolonger une chaîne « Komodo » dans le répertoire% INC hachage ..
Je cherche un remplaçant.
La solution
Qu'est-ce que votre% INC contient lorsque vous lancez le script sous Komodo? Il y a une bonne chance que certains modules spécifiques Komodo sont chargés. Il est préférable d'imprimer son contenu avec:
use Data::Dumper;
print Dumper \%INC;
Autres conseils
On dirait que quelque chose comme cela est plus facile (pour le script de savoir qu'il est en cours d'exécution sous Komodo):
use Modern::Perl;
if (exists $ENV{'KOMODO_VERSION'}) {
say "Script is running under Komodo $ENV{'KOMODO_VERSION'} !";
} else {
say "script is not running in Komodo"
}
Mise à jour (par « Lexu): Komodo (7) place maintenant KOMODO_VERSION dans l'environnement