I like to use AUTOLOAD for my accessors like:
sub AUTOLOAD {
my $self = shift;
return unless ref($self);
# lets find out what the mysterious missing func is
my ($attribute) = $AUTOLOAD =~ m/.*::(.*)/;
# this is our psuedo get/set
# we can make this as simple or complex as we want
if( my $value = shift ){ ### we have an argument
# if attribute exists
# this is our sort of rudimentary access control
# so we can't create arbitrary attributes
if( exists $self->{$attribute} ){
$self->{$attribute} = $value;
}elsif( exists $self->{ lc($attribute) } ){
# double check caller didn't mean lower case
$self->{ lc($attribute) } = $value;
}else{
# we can put assignment code here if
# we want to be able to automatically
# create object attributes on the fly
}
# here is a good place to call your commit()
# or write() method if applicable
$self->write();
}else{ # must be an get type call
return $self->{$attribute} if exists $self->{$attribute};
return $self->{lc($attribute)} if exists $self->{lc($attribute)};
}# end if/elsif/else value = shift
}
Update: BrentDax is spot on
"Never be afraid to try something new. Remember, amateurs built the ark. Professionals built the Titanic."
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|