Come può uno script Perl rilevare se è in esecuzione all'interno del Komodo IDE?
-
19-09-2019 - |
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.
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