我发现的一种方法是,以检查是否Perl的调试器是“加载”通过检查定义($ DB ::单)并且假定科莫是活动的,如果$ DB ::单被定义..

但是,这也可能意味着脚本运行的合法作为的的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()例程失败。一些调查显示,它从“长”改变了我的全局路径设置为“短”的名字(这是Windows下)..有nolonger在%INC哈希“KOMODO”字符串..

我正在寻找的替代品。

有帮助吗?

解决方案

什么是您%INC包含您在科莫多下启动脚本?这是一个很好的机会,一些特定的科莫多模块被加载。 这是更好地打印与内容:

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

其他提示

好像这样的事情很容易(让脚本知道它是科莫多下运行):

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(由“lexu):KOMODO(7)现在放置KOMODO_VERSION在环境

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top