我发现的一种方法是通过检查是否定义了($ DB :: single)并假设Komodo是活动的(如果已定义$ DB :: single)来检查是否“加载”了Perl调试器。

但这也可能意味着该脚本在“独立”调试器下正以perl -d合法运行。

#!/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的建议导致:

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


但是还有另一种方法吗?



今天更新我的isKomodo()例程失败。一些调查表明,IT将我的全局路径设置从“长”名称更改为“短”名称(这在Windows下)。%INC哈希中不再有“ KOMODO”字符串。

我正在寻找替代品。

最佳答案

在Komodo下启动脚本时,%INC包含什么?很有可能会加载某些Komodo特定的模块。
最好使用以下命令打印其内容:

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

10-08 05:05