Como um script Perl pode detectar se ele está sendo executado dentro do Komodo IDE?

StackOverflow https://stackoverflow.com/questions/1195175

  •  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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top