Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: single instance shared with module

by jynx (Priest)
on Sep 16, 2002 at 21:25 UTC ( #198375=note: print w/ replies, xml ) Need Help??


in reply to single instance shared with module


Brothers smack me down if i'm wrong, but recently i used something similar to this code to do what you're describing:

#!/usr/bin/perl -w use strict; package foo; { my $self = { foo => bar }; sub new { return bless $self, shift; } sub get_obj { return UNIVERSAL::isa($self, 'foo') # or not as cool: #return ref($self) eq 'foo' ? $self : goto &new; } }
This not only makes new instances when you want them, it also can pass on old instances to any class that requires it and uses the 'get_obj' method.

Whether this is Good Coding(tm) or not, i can't say, but it's worked for me (and i might change what i have, depending on how monks respond to this :)

jynx

Update: Added the UNIVERSAL::isa call and commented out the ref($self) call due to podmaster's suggestion. Could someone please elaborate on why UNIVERSAL::isa is better?

Update2: Whoops. Put the args for UNIVERSAL::isa in wrong order. Hmm, i tested it before i posted and it seemed to work fine the other way as well. Tested again and apparently i was smoking crack. Mental note: RTFM first next time! ;-)


Comment on Re: single instance shared with module
Download Code
Re: Re: single instance shared with module
by Solo (Deacon) on Sep 16, 2002 at 22:39 UTC
    In brief, UNIVERSAL::isa allows for inheritance, while ref($self) doesn't.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2014-08-30 21:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (294 votes), past polls