¿Cómo puede detectar un script Perl si se está ejecutando en el IDE de Komodo?
-
19-09-2019 - |
Pregunta
Una forma que he encontrado es para comprobar si el depurador de Perl se "carga" mediante la comprobación de definido ($ DB :: individual) y asumiendo Komodo está activo, si $ DB :: solo se define ..
Pero esto también podría significar la secuencia de comandos se ejecuta legítimamente como perl -d en el depurador "independiente".
#!/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 sugerencia conduce a:
if ( grep( /.*Komodo\ IDE\.app/g, values %INC) ){
say "Komodo is running"
} else {
say "Komodo is not running"
};
Pero hay otra manera?
Actualizar hoy mi isKomodo () rutina falló. Algunos investigación mostró, que me cambió la configuración de ruta globales de "larga" a los nombres de "cortas" (esto es bajo Windows) .. hay nolonger es una cadena "KOMODO" en el hash% INC ..
Estoy buscando un reemplazo.
Solución
¿Qué contiene el INC% al iniciar la escritura en virtud de Komodo? Hay una buena probabilidad de que algunos módulos de Komodo-específicas se cargan. Es mejor para imprimir su contenido con:
use Data::Dumper;
print Dumper \%INC;
Otros consejos
Parece que algo como esto es más fácil (por el guión de saber que se está ejecutando en virtud de 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 (por 'Lexu): KOMODO (7) coloca ahora KOMODO_VERSION en el entorno