Pollute version 0.02 ==================== Pollute lets you wrap C<use> statements up in files that are collections of other modules. Say you have five modules that are included in all the programs in your project, you can write one Includeme.pm file that C<use>s Pollute, then uses the five modules, than C<Pollute>s and you only have to use one module instead of all five. It works by taking a listing of all names in the caller's symbol table in its C<import> function, then comparing that list to another one generated when C<Pollute> is run, and assigning all new names into the caller's caller's symbol table. After C<Pollute>ing, the containers within Pollute:: are released. Pollute 0.03 keeps only one table of symbol names and has no fine-grained overwriting control. It's operation is so simple that I believe it would be easier, if you need fine-grained importation, to copy the source of Pollute.pm into your project and modify it than to invent an options language for controlling a more powerful Pollute.pm. For instance, it might be nice to optimize the list of modules in such a way to remove all but one of the double-import events. Using Pollute 0.02, your module list module might look like this: cat > ModuleList.pm <<EOF package ModuleList; use Pollute; use foo; use bar; use baz; use fred; use jim; use Shiela::Mbogo; Pollute; EOF and you can import everything in all of them with use ModuleList; wherever you need to. The following feature to be in version 0.03: Like I was saying, it might be nice to have Pollute track the lists of symbols that C<Pollute> exports, so you can refer to the same list later. So here is that functionality too. cat > ModuleListP.pm <<EOF package ModuleListP; use Pollute::Persistent; use foo; use bar; use baz; use fred; use jim; use Shiela::Mbogo; Pollute; EOF This works the same as regular Pollute, but Pollute::Persistent::Pollute, in addition to Polluting the caller's symbol table, also defines a Pollute routine within the using package, so other packages can import all the new symbols from the polluting package's symbol table with, to use the above example, &ModuleListP::Pollute; INSTALLATION To install this module type the following: perl Makefile.PL make make test make install DEPENDENCIES This module requires Perl 5 l-value typeglobs referred to by symbolic reference. And BEGIN blocks. The test function uses Carp as its example of an exporting module. COPYRIGHT AND LICENCE Copyright (C) 2001 David L. Nicol. Released under your choice of GPL if you want to give away your derivative works or Artistic if you want to sell them. Enjoy!