Beat: Pluginstelle für Module

Beitrag lesen

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