Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Is it legal to create subs in a module?

by lestrrat (Deacon)
on Oct 11, 2001 at 19:34 UTC ( [id://118237]=note: print w/replies, xml ) Need Help??


in reply to Is it legal to create subs in a module?

Subs are declared as part of the packge, not part of an object.

If your Object->new() method dynamically creates a sub called foo, then you're in effect declaring Object::foo. This sub is now bound to the package, and therefore will stick around until the end of the execution

There are several approaches:

## autoload sub AUTOLOAD { my $self = shift; ( my $subname = $AUTOLOAD ) =~ s/.*:://; if( $obj->{ $subname } ) { ## this is over simplified, so you may need to do ## other checks... return $self->{ subname }; } else { croak "No such sub"; } }

If you just want to get/set attributes, I recommend the AUTOLOAD way rather than dynamically declaring subs. There would be no residual subs floating around that way

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2024-04-20 00:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found