SPUG: Scope question

Colin Meyer cmeyer at helvella.org
Wed Jun 12 01:54:59 CDT 2002


I said:
> 
> The ::'s aren't meaningful, except to the author of the code (i.e. there's
> not any explicit inheritence between namespaces).
          ^^^^^^^^
I meant *implicit*.  There's no implicit inheritence between similarly
named namespaces.  All inheritence and aliasing between namespaces is
very explicit with mechanisms like the @ISA array and the Exporter
module.

A reference for further reading: perldoc perlsub
- which 'perldoc -f package' or 'perldoc -f my' lead you to. Scoping in
Perl is discussed throughout the document.

I am in full agreement with Jason's comment about passing parameters
around explicitly. In fact, I read a corny quote from _Code Complete_ at
last month's SPUG meeting to that effect, about parameters being a kiss
on the lips between routines (who's goal is strong cohesion via loose
coupling - or something like that ;-). That is, it gives me a headache
to search around for the meaning of a global variable, when I find it
randomly accessed from deep within some routine of some module. 

However, there are perfecty valid uses for global variables. In a module
that is used for manipulating data in a relational database, how tired
do you get of passing around the database handle into each routine, or
accessing it from buried within your object. Just put it in a global,
document that to be your API, and use it when needed.  Another fine use
of a global is to hold application configuration data.

Have fun,
-C.
 

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     POST TO: spug-list at pm.org       PROBLEMS: owner-spug-list at pm.org
      Subscriptions; Email to majordomo at pm.org:  ACTION  LIST  EMAIL
  Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
 For daily traffic, use spug-list for LIST ;  for weekly, spug-list-digest
     Seattle Perl Users Group (SPUG) Home Page: http://seattleperl.org




More information about the spug-list mailing list