Frage

Ein Weg, ich fand, ist zu überprüfen, ob der Perl-Debugger "geladen" wird durch die Überprüfung für definiert ($ DB :: single) und unter der Annahme, Komodo aktiv ist, wenn $ DB :: single definiert ist ..

Aber das könnte auch das Skript bedeutet legitim läuft als perl -d unter der "standalone" Debugger.

#!/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 's Vorschlag führt zu:

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

Aber gibt es einen anderen Weg?


UPDATE heute meine isKomodo () Routine fehlgeschlagen. Einige Untersuchung ergab, dass es meine globalen Pfadeinstellungen geändert von „long“ auf „short“ Namen (dies ist unter Windows) .. es nolonger ist ein „KOMODO“ string in der% INC Hash ..

Ich bin auf der Suche nach einem Ersatz.

War es hilfreich?

Lösung

Was ist Ihr% INC enthält, wenn Sie das Skript unter Komodo starten? Es gibt eine gute Chance, dass einige Komodo spezifische Module geladen werden. Es ist besser, seinen Inhalt mit drucken:

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

Andere Tipps

Es scheint, wie so etwas wie das ist einfacher (für das Skript zu wissen, dass es unter Komodo ausgeführt wird):

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 (von ‚Lexu): KOMODO (7) legt jetzt KOMODO_VERSION in der Umgebung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top