Philipp Hasenfratz: SOAP::Lite und (externe) Module

Halihallo Forumer

Ich habe schon mehrere Module für SOAP-Anwendungen geschrieben. Jedoch hatte ich immer folgende "Bedenken":

Wenn ich in einem Modul DB-Access brauche, muss ich immer das DBI Modul im soap-Server angeben; genauso, wenn ich irgendwelche andere Module benötige. Das Problem hierbei ist, dass ich eine Vielzahl an Modulen in den soap-Server importieren muss, die eventuell gar nie gebraucht werden, da der Client diese gar nie anspricht. Aber angeben muss ich sie, da sonst andere Anwendungen nicht mehr funktionieren.

Frage: Gibt es eine Möglichkeit Module "on-the-fly" zu laden, also erst, wenn sie auch von der client-Applikation gebraucht werden (eg. im dispatchten SOAP-Modul selber)?

Versucht habe ich schon, die absoluten @INC Werte in einem SOAP-Modul (eines vom Dispatcher aufgerufenen) anzugeben und die benötigten Module wie "normal" im Modul selber zu laden. Leider bin ich daran gescheitert.

Beispiel:

package t::t;

BEGIN {
   @INC = qw(c:/perl/site/lib c:/perl/lib .);
   use DBI;
}

oder

@t::t::INC = ('c:/perl/site/lib', 'c:/perl/lib', '.');

ergibt mir trotz @INC einen Fehler: Das Modul sei in @INC = '.' nicht auffindbar. Es scheint, dass SOAP::Lite die @INC-Pathes verändert und immer auf den dispath_to Pfad zeigen lässt (was ja auch Sinn macht). Frage ist nur, wie sich das verändern lässt bzw. welche andere Lösungen es für dieses Problem gibt (wenn es überhaupt gibt).

Viele Grüsse

Philipp