[Chicago-talk] Is there a way to simplify including multiple .pm files?
Mike Fragassi
frag at ripco.com
Fri Mar 14 11:48:37 PDT 2008
On Fri, 14 Mar 2008, He Guangsheng-W16844 wrote:
> Good day.
>
> New to chicago.pm. I have a question:
>
> My scripts take a lot of constants, so I defined these constants in
> several ConstantVar.pm files and include them all. But more and more
> constant files coming, so I have to add one line 'use ...' to each of
> my scripts. Is there a better way to manage this?
>
> In C, we can make one header include a lot of headers, the only need to
> maintain changes for this one. Is that similar approach in Perl?
>
This won't work with the standard Perl approach, i.e. using Exporter or
Exporter::Lite; you'll still have to add 'use ...' to each script or
package that needs the constants.
If all your scripts really, truly need _all_ the constants from all the
.pm files, and it doesn't make sense to dump them all into a single and
possibly huge module, you would be better off creating one intermediary
pm, that itself uses Exporter. This module could load all the .pm files
with the constants, and then export all the constants via @EXPORT or
%EXPORT_TAGS. Then, each script would just use this module, and get
everything. When it comes time to add a new .pm, you add it in only one
place, the new intermediary module, and not in each script.
Alternatively, you can do the same kind of thing in an OO style: the
intermediate module would give you an object, say $constants, with the
other modules as parents via 'use base'. You'd call methods on this
object to fetch constants from the parent classes. This avoids having
to fiddle with Exporter variables, but if any of your constants are
class variables, you will have to write methods to access them.
-- Mike F.
More information about the Chicago-talk
mailing list