The [Tcllib] contains a package to safely manage plugins to applications called plugin. You can find the documentation at: * http://tcllib.sourceforge.net/doc/pluginmgr.html * http://docs.activestate.com/activetcl/8.5/tcllib/pluginmgr/pluginmgr.html ---- Anyone care to post a simple example? --- [JC] 2007-09-19 [AK] same day - The '''page::pluginmgr''' in the page module of Tcllib uses the pluginmgr. ---- Ok, with the help of [AK] I was able to get a simple example together... The example is nothing more than a Hello World, with a twist... We can say hello/goodbye in multiple manners. The two plugins I created are Simple and Slang. '''1. Create two plugins''': You can place plugins in multiple locations, but for my example I made a directory ~/.example/plugin ... That is where I placed the plugin code. ~/.example/plugin/simple.tcl proc hello {name} { return "Hello $name." } proc goodbye {name} { return "Goodbye $name." } package provide example::plugin::simple 0.1 ~/.example/plugin/slang.tcl proc hello {name} { return "What's up $name?" } proc goodbye {name} { return "Well, $name. See ya later!" } package provide example::plugin::slang 0.1 ~/.example/plugin/pkgIndex.tcl package ifneeded example::plugin::simple 0.1 [list source [file join $dir simple.tcl]] package ifneeded example::plugin::slang 0.1 [list source [file join $dir slang.tcl]] '''2. Create our program to use the plugins'''. This you can place anywhere, I always keep a directory for learning, ~/develop/learning/example.tcl is my file. package require pluginmgr set plugApi { hello goodbye } pluginmgr plug -pattern example::plugin::* -api $plugApi pluginmgr::paths plug example plug load simple puts "Simple: [plug do hello John]" puts "Simple: [plug do goodbye John]" plug load slang puts "Slang: [plug do hello John]" puts "Slang: [plug do goodbye John]" '''3. Now run your code!'''. $ tclsh example.tcl Simple: Hello John. Simple: Goodbye John. Slang: What's Up John? Slang: Well, John, see ya later! --- [JC] 2007-09-19 <>Category Tcllib | Category Package