Perl 스크립트가 Komodo IDE 내에서 실행 중인지 어떻게 감지 할 수 있습니까?

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

  •  19-09-2019
  •  | 
  •  

문제

내가 찾은 한 가지 방법은 Perl 디버거가 확인하여 "로드"되는지 확인하는 것입니다. 정의 ($ db :: 싱글) 그리고 $ db :: 단일이 정의 된 경우 komodo가 활성화되었다고 가정합니다 ..

그러나 이것은 또한 대본이 합법적으로 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 () 루틴이 실패했습니다. 일부 조사는 내 글로벌 경로 설정을 "긴"에서 "짧은"이름으로 바꾸 었다는 것을 보여 주었다.

교체품을 찾고 있습니다.

도움이 되었습니까?

해결책

Komodo에서 스크립트를 시작할 때 %inc는 무엇을 포함합니까? 일부 코모도-특이 적 모듈이로드 될 가능성이 높다. 내용을 다음과 같이 인쇄하는 것이 좋습니다.

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