Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Avoiding global object handle

by gregorovius (Friar)
on Mar 26, 2002 at 18:15 UTC ( [id://154460]=note: print w/replies, xml ) Need Help??


in reply to Avoiding global object handle

I would go for the global variable, but hidden behind a module which will not export it by default. You could call this variable a "framework global", and is also a singleton.
package MyFramework; use strict; use Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK); @ISA = qw(Exporter); @EXPORT_OK = qw( $HANDLE ); 1;
Thus, whenever you need to use it in a module, you'll just have to put:
use MyFramework qw ( $HANDLE );
at the top of it and it'll be available for all methods in that module. Where would you initialize this variable? As early as possible, before any method requiring it is executed, preferrably in a BEGIN block within the MyFramework package itself.

This approach is equivalent to your "get_handle" method because it ensures that the same instance will be used by all. It also makes it easy to replace the class that produces the handle, because it would only be invoked once in the whole of your code, at the place where $HANDLE is initialized.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://154460]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (6)
As of 2024-04-24 09:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found