Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
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! ;-)

Replies are listed 'Best First'.
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?
[stevieb]: I suppose I'll have to delete the 2.36 ver, then re-upload 2.36.1 and 2.36.2, and re-version 2.36 as 2.36.0
[Corion]: stevieb: Naah, I wouldn't delete versions from CPAN. Just up the version to 2.37 resp. 2.37.0 / 2.37.1 etc

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (12)
As of 2017-01-19 15:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you watch meteor showers?




    Results (170 votes). Check out past polls.