Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Re: how to avoid mis-spelling hash keys?

by crouchingpenguin (Priest)
on Jan 06, 2003 at 16:14 UTC ( #224658=note: print w/replies, xml ) Need Help??


in reply to Re: how to avoid mis-spelling hash keys?
in thread how to avoid mis-spelling hash keys?

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."

Replies are listed 'Best First'.
Re(3): how to avoid mis-spelling hash keys?
by BrentDax (Hermit) on Jan 06, 2003 at 23:01 UTC
       if( $self­->{$a­ttrib­ute} ){
    That will fail if $self->{$attribute} is set to zero, the empty string, or undef. Perhaps this would work better:

       if(exists $self->{$attribute}) {

    =cut
    --Brent Dax
    There is no sig.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://224658]
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 2016-10-01 21:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?






    Results (8 votes). Check out past polls.