> -----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>