4

私が見つけた 1 つの方法は、$DB::single が定義されている場合、define ($DB::single)をチェックし、Komodo がアクティブであると仮定して、Perl Debugger が「ロード」されているかどうかをチェックすることです。

しかし、これは、スクリプトが「スタンドアロン」デバッガーの下で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"
};

しかし、別の方法はありますか?


UPDATE今日、私の isKomodo() ルーチンが失敗しました。一部の調査では、IT が私のグローバル パス設定を「長い」名前から「短い」名前に変更したことがわかりました (これは Windows の下にあります) ..%INC ハッシュに「KOMODO」文字列がなくなりました..

代わりを探しています。

4

2 に答える 2

2

このような方が簡単なようです (スクリプトが 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"
}

更新 (by 'lexu): KOMODO (7) は環境に KOMODO_VERSION を配置するようになりました

于 2010-11-18T17:13:27.370 に答える
2

Komodo でスクリプトを起動すると、%INC には何が含まれますか? Komodo 固有のモジュールがロードされる可能性は十分にあります。そのコンテンツを次のように印刷することをお勧めします。

use Data::Dumper;
print Dumper \%INC;
于 2009-07-28T16:21:05.843 に答える