in reply to only allow certain parameters
Right off the bat, this is what I thought of:
sub balance_by { my ($self,$entry) = @_; my %valid_params = map {$_ => 1} qw/ foo bar /; $self->{'balance_by'} = (defined $entry and exists $valid_params{$ +entry}) ? $entry : 'foo'; return $self->{'balance_by'}; }
The only real change is the removal of the unless logic. What that does is set the "balance_by" if you have a valid $entry>, else it sets it to the default "foo". However, it seems to me that you wanted a one-time setting of balance_by that could not be changed. Is that correct? In your code "foo" will only be used as a default on the first pass.
So, if I understood what you wanted, my code will always set balance_by to $entry if you have a valid $entry. If it's not valid, it sets it to "foo".
Cheers,
Ovid
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.
In Section
Seekers of Perl Wisdom