> -----Message d'origine-----
> De : Santiago Hirschfeld [mailto:[EMAIL PROTECTED]
> Envoyé : jeudi 10 mars 2005 21:58
> À : beginners@perl.org
> Objet : Design Plugin System
> 
> Hi everyone,
> 
> I'm pretty new to perl and i'm doing a program to organize music, I'd
> like to make a plugin system for the file formats, so i can just use
> the formats y ussually have, and not include a long list of "use" in
> my main program.
> I was thinking in create modules in MyProg/AudioFormats/ with names as
> Ogg.pm and then call them automattically in my main program (which
> should check for all existing files and then create a hash containing
> the extentions the plugin module manages and the module name (like
> ('ogg'  => 'Ogg', 'mp3' => 'Mp3',) )  and use some standard subs in
> every module (get_file_tag, get_know_extentions, set_file_tag).
> My idea is to call the right get_file_tag for every file, so
> MyProg::AudioFormats::Ogg::get_file_tag is called when an ogg file is
> used. And that is  what i don't know how to do =)
> 
> Any ideas?
> 
> Sorry for the bad english and the long post.
> 
> Thanks in advance.
> 

If You don't like a long list of "use Foo.pm",
you can dynamically load your module like this:

eval "require $plugin";
if($@){
        die qq/Couldn't load plugin "$plugin", "$@"/;
}
else{
        my $obj = $plugin->new();
        $obj->$method($args);
}

Yes! $plugin, $obj, $method, $args can all be known only at runtime ;)

Cheers,
José.



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to