Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How should I organize many Perl modules?

Consider that I have 100 Perl modules in 12 directories. But, looking into the main Perl script, it looks like 100 use p1 ; use p2 ; etc. What is the to best way to solve this issue?

like image 379
joe Avatar asked May 07 '10 12:05

joe


People also ask

How many Perl modules are there?

Perl modules are a set of related functions in a library file. They are specifically designed to be reusable by other modules or programs. There are 108,000 modules ready for you to use on the Comprehensive Perl Archive Network.

What is CPAN module in Perl?

The Comprehensive Perl Archive Network (CPAN) is a repository of over 250,000 software modules and accompanying documentation for 39,000 distributions, written in the Perl programming language by over 12,000 contributors.

Where are Perl modules stored on Windows?

My Perl modules are in ~/perl/install, for example. Well, in my situation, user files all in NFS path, and locate just exclude NFS. Since the PERL5LIB is a bit long on that system, find is not a good way. For Windows, might need to use double-quotes on the outside, single quotes on the inside.

How modules are created in Perl?

Creating a moduleA module in Perl is just a file in which there is a single namespace (package) and where the name of the file is the same as the name of the package inside with the . pm extension. So in our case if we rename the namespace_lib.pl to be Calc.pm then suddenly we have a module.


2 Answers

It seems unlikely to me that you're useing all 100 modules directly in your main program. If your program uses a function in module A which then calls a function from module B, but the main program itself doesn't reference anything in module B, then the program should only use A. It should not use B unless it directly calls anything from module B.

If, on the other hand, your main program really does talk directly to all 100 modules, then it's probably just plain too big. Identify different functional groupings within the program and break each of those groups out into its own module. The main reason for doing this is so that it will result in code that is more maintainable, flexible, and reusable, but it will also have the happy side-effect of reducing the number of modules that the main program talks to directly, thus cutting down on the number of use statements required in any one place.

(And, yes, I do realize that 100 was probably an exaggeration, but, if you're getting uncomfortable about the number of modules being used by your code, then that's usually a strong indication that the code in question is trying to do too much in one place and should be broken down into a collection of modules.)

like image 200
Dave Sherohman Avatar answered Nov 11 '22 21:11

Dave Sherohman


Put all the use statements in one file, say Mods.pm:

package Mods;

use Mod1;
use Mod2;
...

and include the file in your main script:

use Mods;
like image 29
Eugene Yarmash Avatar answered Nov 11 '22 22:11

Eugene Yarmash