Warum nicht:
require $f;
my $instance = $m->new();
> >
> > Da sind viele verschiedene Plugins, die alle die gleiche sub haben müssen, die ich NICHT in den Namensraum exportieren darf.
>
> Ja, genau deshalb verwendet man doch Objekte
>
> > Das heisst ich muss mit dem fully qualified Namen zugreifen.
>
> Da fällt mir leider auch keine Lösung ein.
Ich habe jetzt mal ein halbes objektorientiertes Modul gebastelt
(Ich brauche keone Objektmethoden)
# Ein testmodul für die Plugin-Schnittstelle
package test;
BEGIN {
use Exporter ();
our (@ISA, @EXPORT, @EXPORT\_OK);
@ISA = qw(Exporter);
@EXPORT = qw( &process );
@EXPORT\_OK = qw( &process );
use CGI::Carp qw(carpout);
open(LOG, ">","error.txt") or die "Unable to append to error.txt: $!\n";
carpout(\*LOG);
}
sub process {
my $class=shift;
return( 0, "Plugin test.pm meldet: Plugin OK");
}
1;
Und verwende es so:
require $mod.'.pm'
or return '<b class="warning">Modul '.$mod.' kann nicht eingebunden werden.</b>';
($error, $content) = $mod->process();
Can't locate object method "process" via package "test" (perhaps you forgot to load "test"?) at bla
Ich bin überzeugt, use würde gehen. Gerade das aber kann ich nicht brauchen.
mfg Beat
--
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische