If your program's going to grow in size beyond a certain point, you'll need to use some sort of namespace or package to segment global names into different groupings - moving from a single name to a forename / surname type system, if you like to think of it that way.
In C++, it's namespaces - see
[here] for a source code example. In Perl, we use packages - see
[here] and
[here] (called from
[here]). Both of those examples are
not really object oriented, although both Perl and C++ are OO languages and use this namespace / package capability within their OO implementation.
There's an example of Tcl's namespaces
[here], and in PHP
[here] ...
You'll find that many of my simple namespace demos are rather less that useful programs, and you'll ask yourself "why's he using namespaces here?". The answer is that they're purely used for illustrative purposes in these cases - name spaces become useful as your program moves from big to massive, or where you're packing substantial chunks of code for others to use and you want to expose an absolute minimum of internals to them. And of course it would take a very long time on a course to develop something that was substantial enough to make namespaces worthwhile, only to end up with an example that was too cluttered to show you the features easily without them getting lost in the rest of the thing!
(written 2010-11-24, updated 2010-12-04)
Associated topics are indexed under
C237 - C and C based languages - NamespacesT213 - Tcl/Tk - Libraries, Packages and Namespaces [3418] Tcl packages, pkg_mkIndex, pkgIndex.tcl -what are they and why use them. - (2011-09-03)
[3417] What is a namespace and why do we need them? - (2011-09-03)
[2476] Tcl - uplevel to run code at calling level - (2009-10-24)
[1529] Tcl - learning how to use namespaces, packages and libraries together - (2008-02-02)
[1339] Packages and Namespaces are like Suitcases and Aircraft - (2007-09-09)
[146] example of Tcl namespaces and packages - (2004-12-10)
P209 - Subroutines in Perl [3833] Learning to use existing classes in Perl - (2012-08-10)
[3574] Perl functions such as chop change their input parameters - (2012-01-10)
[2929] Passing a variable number of parameters in to a function / method - (2010-08-20)
[2833] Fresh Perl Teaching Examples - part 2 of 3 - (2010-06-27)
[2550] Do not copy and paste code - there are much better ways - (2009-12-26)
[2069] Efficient calls to subs in Perl - avoid duplication, gain speed - (2009-03-07)
[1921] Romeo and Julie - (2008-12-04)
[1860] Seven new intermediate Perl examples - (2008-10-30)
[1850] Daisy the Cow and a Pint of Ginger Beer - (2008-10-21)
[1826] Perl - Subs, Chop v Chomp, => v , - (2008-10-08)
[1784] Global - Tcl, PHP, Python - (2008-09-03)
[1782] Calling procs in Tcl and how it compares to Perl - (2008-09-02)
[1202] Returning multiple values from a function (Perl, PHP, Python) - (2007-05-24)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[969] Perl - $_ and @_ - (2006-12-07)
[775] Do not duplicate your code - (2006-06-23)
[588] Changing @INC - where Perl loads its modules - (2006-02-02)
[531] Packages in packages in Perl - (2005-12-16)
[357] Where do Perl modules load from - (2005-06-24)
[308] Call by name v call by value - (2005-05-11)
[96] Variable Scope - (2004-10-22)
4ea6
Some other Articles
Belfast, on a cold November eveningStrings, Garbage Collection and Variable Scope in C++Throwing your own exception in C++, and catching itUsing C and C++ functions in the same program - how to do itSeparating groups of variables into namespacesPictures from the Birkenhead to Belfast crossingOn the way to the course this weekComments in and on Perl - a case for extreme OO programmingMelksham Carnival - getting ready for 2011Databases - why data is split into separate tables, and how to join them