Ich habe ein Perl-Skript (Standalone-Programm), das einige Subs enthält, die ich in anderen Skripts wiederverwenden möchte. Aufgrund von Einschränkungen der Ausführungsumgebung kann ich die Funktionen nicht in eine gemeinsame .pm
Datei verschieben.Perl-Skript als Programm und als Modul verwendbar
Ist es möglich zu unterscheiden, ob das Skript als eigenständiges Programm ausgeführt wurde oder ob es von einem anderen Skript editiert wurde require
ed/do
?
Das einzige, was ich finden konnte, war caller
auf der obersten Ebene zu verwenden: Standalone-Programm hat keinen Anrufer, während wenn require
ed caller
zeigt, wer das Modul geladen hat. Gibt es eine bessere Lösung?
Ich habe die Antwort unten veröffentlicht, aber wenn Sie die "Einschränkungen der Ausführungsumgebung" näher erläutern könnten, gibt es möglicherweise Möglichkeiten, diese Einschränkungen zu umgehen, die Ihnen die Verwendung geeigneter Module ermöglichen würden? Thx – DVK
@DVK: Ich bin wirklich glücklich mit Ihrer Antwort. (Weder meine Syntax von Caller() ist so schön wie in Ihrer Antwort.) Bezüglich der Begrenzung. Wirklich ziemlich albern: Ich kann dem Verzeichnis kein weiteres nicht ausführbares Modul hinzufügen, da es nach den Dateien durchsucht wird und alle Dateinamen eine besondere Bedeutung haben. Durch Hinzufügen von .pm gibt es andere Skripte, die ich nicht ändern darf. – Dummy00001
Laut @FM, meine Frage ist im Wesentlichen eine dup von http://StackOverflow.com/Questions/1131304/ – Dummy00001