note
jynx
<br>
Brothers smack me down if i'm wrong, but recently i used something similar to this code to do what you're describing:<code>
#!/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;
}
}
</code>
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.<p>
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 :)<p>
jynx<p>
<b>Update</b>: 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?<p>
<b>Update2</b>: 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! ;-)<p>
198354
198354