Domanda

Un modo che ho trovato è quello di verificare se il Perl Debugger è "caricato" controllando per definito ($ DB :: singola) e assumendo Komodo è attivo, se $ DB :: singolo è definita ..

Ma questo potrebbe anche significare lo script è legittimamente in esecuzione come perl -d nel debugger "stand-alone".

#!/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 suggerimento conduce a:

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

Ma c'è un altro modo?


Aggiorna oggi la mia isKomodo () di routine non è riuscita. Alcuni inchiesta ha dimostrato, che ha cambiato la mia impostazioni del percorso globali da "lungo" per i nomi di "corte" (questo è sotto Windows) .. c'è nolonger una stringa "KOMODO" nella cartella% INC hash ..

Sto cercando un sostituto.

È stato utile?

Soluzione

Che cosa fa il tuo% INC contiene quando si lancia lo script in Komodo? C'è una buona probabilità che alcuni moduli di Komodo-specifici sono stati caricati. E 'meglio per stampare il suo contenuto con:

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

Altri suggerimenti

Sembra che qualcosa di simile a questo è più facile (per lo script di sapere che è in esecuzione in 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 (da 'lexu): KOMODO (7) ora pone KOMODO_VERSION nell'ambiente

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top