Perl 스크립트가 Komodo IDE 내에서 실행 중인지 어떻게 감지 할 수 있습니까?
-
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을 배치합니다.
제휴하지 않습니다 StackOverflow