Thanks, Craig and David for the advice: I'll refactor things next release to 'use PDL::Lite' at the top of NetCDF.pm.

Regards,

  Doug

[email protected]
Software Engineer
UCAR - COSMIC, Tel. (303) 497-2611

On Mon, 23 Apr 2012, Craig DeForest wrote:

On Apr 23, 2012, at 9:24 AM, David Mertens wrote:

      On Mon, Apr 23, 2012 at 10:00 AM, Doug Hunt <[email protected]> wrote:
      Or, just put "use PDL::Lite" at the top of your module to avoid such 
hassles.
       
      PDL group:  Is it normal to do all required 'uses' in the module, or 
should the script calling the module be
      expected to do it?


Defensive programming is always best. Your users may simply use your module to 
obtain a piddle, then pass the object to
other libraries that expect piddles, so they don't need to say "use PDL" in 
their own namespace.
 
      I don't see that it would hurt to 'use PDL' in PDL/NetCDF.pm.


To keep things light, I would add "use PDL::Lite". Otherwise you're going to 
have Perl unnecessarily pull many symbols
into PDL::NetCDF's package space, which makes the load time longer than it 
ought to be.
  


I agree vigorously with David. If you need something within your module, use it within 
the module.  Perl's "use" is
specifically designed to not cost much for reloading modules that are "use"d multiple 
times.  Contrariwise, "use PDL" has grown
out of all reasonable proportion since we expect it to pull in so much 
functionality, every time.  

So it is best to "use PDL::Lite" in your module if you just need basic support, "use 
PDL::Lite; use PDL::<foo>" if you need a
little more, or "use PDL" if you can't be bothered to optimize.

Cheers,
Craig



_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to