in reply to Coding Perl With Style

One stylistic question I would suggest thinking about is why the lines of your logic as drawn by variable usage is not matching the lines of your logic as drawn by your modules.

I do not mean to imply by this that they must match. Often you will have a variable (eg a debugging flag) which naturally cuts across module boudaries. However it is often true that when you want to use a variable in many places, it would be cleaner to encapsulate the logic that said variable is used to control into some functions that you isolate into a module. (For instance for the debugging flag you could have a logging function.)

Something to be aware of and think about.

BTW in answer to your specific question, my personal answer is to use an application configuration module where each module says what variables it will import from its configuration scripts, but the configuration scripts are themselves kept in the same directory. Variables that need to be shared across multiple modules can be imported by the configuration scripts and then re-exported. A bit complex, but it works quite well for a system with ~60K lines of Perl.

Replies are listed 'Best First'.
Re: Re (tilly) 1: Coding Perl With Style
by Dogma (Pilgrim) on Nov 27, 2001 at 07:19 UTC
    BTW in answer to your specific question, my personal answer is to use an application configuration module where each module says what variables it will import from its configuration scripts, but the configuration scripts are themselves kept in the same directory. Variables that need to be shared across multiple modules can be imported by the configuration scripts and then re-exported. A bit complex, but it works quite well for a system with ~60K lines of Perl.

    This is essentaly what I'm doing. The Yaps::Config.pm reads in configuration data, creates several hashes, hash a couple of larges hashes itself, sets several flags (including debug flags), and global configuration data and exports it. All other parts of the application use this module to get at that data.