2009-07-28 8 views
4

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 ..Comment un script Perl peut-il détecter s'il s'exécute dans l'EDI de Komodo?

Mais cela peut également signifier que le script fonctionne légitimement sous la forme 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; 
} 

suggestion de zakovyrya conduit à:

if (grep(/.*Komodo\ IDE\.app/g, values %INC)){ 
    say "Komodo is running" 
} else { 
    say "Komodo is not running" 
}; 

Mais est-il un autre moyen?


MISE À JOUR aujourd'hui ma routine isKomodo() a échoué. Une enquête a montré, que IT a changé mes paramètres de chemin global de "long" aux noms "courts" (c'est sous Windows) .. il n'y a plus de chaîne "KOMODO" dans le hash% INC ..

Je suis à la recherche d'un remplacement.

+0

Puis-je vous demander pourquoi vous avez besoin de faire cela? – innaM

+0

Je veux écrire dans la fenêtre "output" (alias StdOut) dans l'EDI et dans un fichier journal lors d'une exécution à l'extérieur. (à lazzy pour le faire avec les options de démarrage ) – lexu

+0

Et que signifie "dehors"? Manuellement depuis le shell, via cron-job, etc? – innaM

Répondre

2

Que contient votre% INC lorsque vous lancez un script sous Komodo? Il y a de fortes chances que certains modules spécifiques à Komodo soient chargés. Il est préférable d'imprimer son contenu avec:

use Data::Dumper; 
print Dumper \%INC; 
+0

+1 ** ça marche **, voir ma question éditée ... mais puisque "% INC" est externe (basé sur l'environnement) j'espère toujours qu'il y aura une autre façon de détecter Komodo. – lexu

+1

Vous aurez besoin de quelque chose d'externe. Komodo pouvait difficilement influencer quelque chose d'interne. – innaM

+0

comme je l'ai montré ci-dessus, il charge déjà le débogueur sans que je fasse (kind-of) .. il pourrait charger quelque chose d'autre qui est identifiable .. – lexu

2

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

UPDATE (par « Lexu): KOMODO (7) place maintenant KOMODO_VERSION dans l'environnement

+0

Je suppose que $ KOMODO_VERSION est nouveau dans Komodo 6 .. et oui, en utilisant c'est beaucoup plus facile .. – lexu

Questions connexes