Wie kann ein Perl-Skript erkennen, ob es innerhalb der Komodo IDE läuft?
-
19-09-2019 - |
Frage
Ein Weg, ich fand, ist zu überprüfen, ob der Perl-Debugger "geladen" wird durch die Überprüfung für definiert ($ DB :: single) und unter der Annahme, Komodo aktiv ist, wenn $ DB :: single definiert ist ..
Aber das könnte auch das Skript bedeutet legitim läuft als perl -d unter der "standalone" Debugger.
#!/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 's Vorschlag führt zu:
if ( grep( /.*Komodo\ IDE\.app/g, values %INC) ){
say "Komodo is running"
} else {
say "Komodo is not running"
};
Aber gibt es einen anderen Weg?
UPDATE heute meine isKomodo () Routine fehlgeschlagen. Einige Untersuchung ergab, dass es meine globalen Pfadeinstellungen geändert von „long“ auf „short“ Namen (dies ist unter Windows) .. es nolonger ist ein „KOMODO“ string in der% INC Hash ..
Ich bin auf der Suche nach einem Ersatz.
Lösung
Was ist Ihr% INC enthält, wenn Sie das Skript unter Komodo starten? Es gibt eine gute Chance, dass einige Komodo spezifische Module geladen werden. Es ist besser, seinen Inhalt mit drucken:
use Data::Dumper;
print Dumper \%INC;
Andere Tipps
Es scheint, wie so etwas wie das ist einfacher (für das Skript zu wissen, dass es unter Komodo ausgeführt wird):
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 (von ‚Lexu): KOMODO (7) legt jetzt KOMODO_VERSION in der Umgebung