Chris: mod_perl und @INC

Beitrag lesen

Hallo Siechfried,

Eine Lösung, die ich gefunden habe, ist per FindBin [...] Die again()-Funktion ist extra für mod_perl erstellt worden.

Das lese ich aber anders:
"This is a problem under mod_perl and other persistent Perl environments, where you shouldn't use this module."

Dann interpretieren wir das wohl unterschiedlich. Kurz nach dem von dir zitierten steht:
"To make sure that FindBin will work is to call the again function"
Und wie gesagt, das funktioniert auch. Nach dem Aufruf von again() stimmts... Aber auch das nur dann, wenn die BEGIN-Blöcke schon abgearbeitet sind. Danach wird offensichtlich der Wert von "$0" nochmal geändert.

CK hat mal was geschrieben: http://forum.de.selfhtml.org/archiv/2005/10/t117825/.

Das hatte ich schon gelesen. Ich hatte nur gehofft, dass es etwas gibt, was 100%ig ohne absolute Pfade auskommt. Aber diese Lösung ist schon gut, immerhin nur 1 Mal was anpassen.

Ein bisschen rumprobiert habe ich noch, und bei mir funktioniert das auch:

  
use Cwd qw(abs_path);  
use File::Basename;  
use lib abs_path(dirname($ENV{'SCRIPT_FILENAME'}).'/../modules');  

Sieht zwar nicht besonders schön oder elegent aus, aber es funktioniert bei mir ohne Kenntnis eines absoluten Pfades. Jetzt muss man sich nur noch auf $ENV{'SCRIPT_FILENAME'} verlassen können. Kann man das?

Grüße
Chris