use Mosche;
Du kannst mit dem Befehl "use lib" in Deinem Script beliebige Verzeichnisse für aufzurufende Module definieren. Lies http://www.perldoc.com/perl5.6.1/lib/lib.html
Ja .... das weiß ich ja. Aber das will ich ja gerade nicht.
Hier mal die technische Seite:
Module, die per 'use' eingebunden werden, werden gleich zur "Kompilierungsphase" ausgeführt, also nicht an der Stelle, an der das ganze eingebunden wird. Folgende Ausschnitte sind also gleich:
#####1#####
use Module;
print $Module::blah;
#####2#####
print $Module::blah;
use Module;
Das heisst, du kannst nicht per
push(@INC, ...);
@INC setzen, weil dies erst nach dem Kompilieren geschehen würde (zu einem Zeitpunkt, wo die Fehlermeldung schon "draussen" ist). Du hast nun mehrere Wege:
- Benutze statt "use" "require" inklusive aller Risiken und Nebenwirkungen.
- Setze einen BEGIN-Block und führe dort den Push aus (das muss vor dem "use Module" sein, denn dass wird dann wiederum hintereinander ausgeführt.
- Benutze "use lib;" - das ist im Grunde das gleiche wie 2), nur sicherer/besser.
use Tschoe qw(Matti);