Como um script Perl pode detectar se ele está sendo executado dentro do Komodo IDE?
-
19-09-2019 - |
Pergunta
Uma maneira que eu encontrei é para verificar se o Perl Debugger é "carregado", verificando definido ($ DB :: single) e assumindo Komodo é ativa, se $ DB :: única é definida ..
Mas isso também pode significar que o script é legitimamente execução como perl -d sob o depurador "independente".
#!/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 sugestão leva a:
if ( grep( /.*Komodo\ IDE\.app/g, values %INC) ){
say "Komodo is running"
} else {
say "Komodo is not running"
};
Mas existe outra maneira?
Atualizar hoje minha rotina isKomodo () falhou. Alguns investigação mostrou que ele mudou a minha configurações de caminho globais de "longo" para nomes de "short" (isto é, sob Windows) .. há nolonger é uma string "KOMODO" no% INC de hash ..
Eu estou procurando um substituto.
Solução
O que a sua% INC conter quando você lançar script em Komodo? Há uma boa chance de que alguns módulos específicos de Komodo são carregados. É melhor para imprimir o seu conteúdo com:
use Data::Dumper;
print Dumper \%INC;
Outras dicas
Parece que algo como isso é mais fácil (para o script de saber que está sendo executado sob 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 agora KOMODO_VERSION no ambiente