Ich schrieb vor kurzem ein neues Perl-Skript, um Prozesse basierend auf entweder Prozessname/Benutzernamen zu beenden und es mit Klassen zu erweitern, so dass ich den Prozesscode in anderen Programmen wiederverwenden konnte. Mein derzeitiges Layout ist -Wie kann mein Perl-Skript sein Modul im selben Verzeichnis finden?
Ich habe ~/src/prod in meine Variable $ PATH hinzugefügt, um von überall auf das Skript zuzugreifen. Wenn das Skript von einem anderen Verzeichnis als seinem residenten Verzeichnis ausgeführt wird, führt dies zu einem "Prozess.pm in @INC kann nicht gefunden werden" (was verständlich ist, da andere als die freigegebenen Verzeichnisse in/usr nur das aktuelle Verzeichnis enthalten.) "."). Eine Problemumgehung, die ich verwendet habe, ist die Verwendung der lib-Direktive, so ist dies ein großes Portabilitätsproblem. Irgendwelche Lösungen, die es mir erlauben, das Skript auch ohne Änderungen auf andere Systeme zu exportieren?
EDIT
- ich wegen seiner Einfachheit und Kernmodul Nutzung 'depesz' Antwort als richtig gewählt haben.
- brian d foys Antwort schlägt zwar andere Methoden vor, um dasselbe zu erreichen (TMTOWTDI), aber sein Beitrag in Perlfaq8 macht diese Frage absolut überflüssig.
vielleicht ist es nur meine Installation, aber wenn beide Dateien im selben Verzeichnis sind, verwende ich einfach "FILENAME.pm". Dann "mein $ newVar = PACKAGENAME-> new();" für jede Objektprogrammierung. –
Wow, das sollte in Perl viel einfacher sein! Machen Sie die einfachen Dinge einfach usw. –