http://qs321.pair.com?node_id=264605

mce has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

I have a OO framework of several modules, and dozens of programs that make use of these modules. In each module I always start with the same lines.

use strict; use Data::Dumper; use Carp;
My question is, is it really needed to import Data::Dumper and Carp in every package file?
Does it have a noticable performance impact?

If it is use'd once (f.e. in my constructor class, which is called by every program in its ISA structure), I should be able to call Dumper by referring to Data::Dumper::Dumper,isn't it.

What is the best practice for this?

I have (not yet) any long running daemon.

I hope this question is clear enough.
---------------------------
Dr. Mark Ceulemans
Senior Consultant
BMC, Belgium

Replies are listed 'Best First'.
Re: use and performance
by diotalevi (Canon) on Jun 10, 2003 at 10:28 UTC

    There is no execution speed impact - loading the code and calling Data::Dumper->import(), Carp->import in multiple locations at compile-time has no runtime implications. By importing the Dumper(), carp(), confess(), etc functions into multiple namespaces you may be occupying more memory than necessary but that doesn't mean it is slower.

Re: use and performance
by perrin (Chancellor) on Jun 10, 2003 at 14:55 UTC
    The best practice is to use all the modules you need in every module that needs them. There is no speed issue (perl only loads them the first time) and it serves as useful documentation.
      This isn't entirely true, since all those imports can really kill your script's startup time. If startup time's an issue, you should "use" modules only once, and just "require" them everywhere else. Equally good documentation, but less pain.

      /s

        I shudder to think how many imports it would take to make a dent in the startup time of a script on a modern computer. Most imports don't do anything at all.