• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Der Sommer ist da! Laue Nächte, lange Abende im Biergarten und Mücken in Heeresstärke - dazu passend lautet das Thema unseres Fotowettbewerbs im Juni Nachtleben --> Klick

perl - require - terminal vs batch

TheGhost

Idared
Registriert
05.10.08
Beiträge
25
Hallo,

ich habe mir eine eigene Bibliothek beschrieben "./lib/support.pl".
Diese binde ich via
require './lib/support.pl' or die "Cannot find the support lib\n";

in das Hauptprogramm "readlog.pl" ein. Starte ich ts_stats.pl vom Terminal klappt das wunderbar.

Lasse ich jedoch readlog.pl im batch laufe, bekomme ich den Fehler dass meine Bib nicht im Standardpfad zu finden ist.

Gibt es eine Methode die "batchsicher" ist um Programme einzubinden - ohne gleich die Standardpfade zu erweitern?

Danke!

Can't locate ./lib/support.pl in @INC (@INC contains: /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4/darwin-thread-multi-2level /Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at /Users/dominik/Dev/scripts/ts_stats/readlog.pl line 30.
 
Du kannst alle möglichen Umgebungsvariablen doch einfach innerhalb deines Skripts manipulieren (gleich zu Beginn), die Systempfade brauchst du doch dazu nicht anzufassen?
 
Wie die Fehlermeldung sagt, kann readlog.pl die Datei ./lib/support.pl nicht in der Liste der Standardpfade finden (die in der Variable @INC abgelegt ist). Das liegt daran, dass "." im Batch-Fall nicht auf das Verzeichnis zeigt, in dem readlog.pl liegt. Du kannst dieses Verzeichnis aber zu @INC hinzufügen:
Code:
use FindBin ();
use lib $FindBin::Bin;
direkt vor der Zeile mit 'require'.
 
Danke, absolute Pfade halfen auch, aber mit FindBin ist es eleganter.