in reply to Re^7: Wassercrats::Improved Volume 0, Number 0
in thread Perl::Improved Volume 0, Number 0

If I say that DB->handle() returns the DBI handle or put the thing in $DB::handle, how does that differ?

It is the same logic that is behind calling accessor and mutator methods on objects, it hides the underlying representation. This is not even really an OO concept either, it goes back to the days of structured programming and abstract data types even. If I call DB->handle() rather than access $DB::handle directly, then I can change my DB package from managing a single connection, to manage a pool of connections. Or I can verify that my connection is active before handing it to the calling function, and reconnect if it is not.

Consider that your function itself is a global of a kind.

Functions are no longer really global if you put them into packages, then you have a heirarchy of namespaces for them to occupy.

-stvn

Replies are listed 'Best First'.
Re^9: Wassercrats::Improved Volume 0, Number 0
by jryan (Vicar) on Aug 27, 2004 at 04:47 UTC
    Functions are no longer really global if you put them into packages, then you have a heirarchy of namespaces for them to occupy.

    How is that different than a variable that lives in a package? Isn't it also part of a heirarchy of namespaces?

      Unless variables and functions share the same namespace and syntax (as in the case of lvalue methods), functions are different in that they also encapsulate behavior. Variables merely encapsulate values.