I would rather use class methods than create a dummy object
with no other purpose than to qualify the package to call.
File::Spec is an excellent example of when that works well.
In the more typical case, however, you would be just as well off importing nothing and always fully qualifying your calls (e.g. MyModule::foo() ). Importing some things is a
programmer convenience to save typing and improve readability. If the sub names reflect what they do, conflicts should be rare (and can always be resolved by fully qualifying). | [reply] |
Egads, far too many uses of OO are superfluous and/or ill advised already
and now you want OO for simple library calls. Just use fully qualified
package names:
#### MyMod.pm
package MyMod;
sub foo { "whatever" }
1;
### calling script
#!/usr/bin/perl -w
use strict;
use MyMod;
print MyMod::foo();
| [reply] [d/l] |
Sorry, I disagree. Modularization of code is desirable. IMHO, using a dummy object to acheive this is more valid than fully qualifying the calls for the following reasons:
-
Typically, less typing, as filenames tend to be longer han variable names (in my world, at least)
-
greater flexibility - if you decide to relocate something in the filesystem, you change only your 'use' and 'new' statments, not everyplace the calls are made.
-
"future-proofing" - as the user gains sophisitication, he or she can more easily modify the modules, or create new ones that inherit from the existing. Exporting or fully qualifying can defeat that.
-
"future-proofing" - on the day when the user suddenly wants to set instance data for his routines, he or she is ready.
Besides, fully qualified calls just look ugly to me, though I suppose it's safer than trusting multiple modules not to stomp on each other or your own functions. Using object methods are also fully qualified.
--Bob Niederman, http://bob-n.com All code given here is UNTESTED unless otherwise stated.
| [reply] |