Как сценарий Perl может определить, работает ли он в Komodo IDE?

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

  •  19-09-2019
  •  | 
  •  

Вопрос

Один из способов, который я нашел, — проверить, «загружен» ли отладчик Perl, проверив определено ($DB::сингл) и предполагая, что Komodo активен, если определен $DB::single..

Но это также может означать, что сценарий законно работает как перл -д под «автономным» отладчиком.

#!/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;
}

заковыряПредложение s приводит к:

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

Но есть ли другой путь?


ОБНОВЛЯТЬ сегодня моя процедура isKomodo() не удалась.Некоторое расследование показало, что ИТ-специалисты изменили настройки моего глобального пути с «длинных» на «короткие» имена (это под Windows)..в хеше %INC больше нет строки «KOMODO».

Ищу замену.

Это было полезно?

Решение

Что содержит ваш %INC, когда вы запускаете скрипт под Komodo?Есть большая вероятность, что загружены некоторые модули, специфичные для Komodo.Лучше распечатать его содержимое с помощью:

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

Другие советы

Кажется, что-то вроде этого проще (чтобы скрипт знал, что он работает под 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"
}

ОБНОВЛЕНИЕ (от lexu):KOMODO (7) теперь помещает KOMODO_VERSION в среду.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top