in reply to parsing parameters in a new() object call

You're on the right track. First, bless the object. Then, use the nifty can method:
sub new { my $class = shift; my $self = {}; bless($self, $class); my %params = @_; foreach my $token (keys %params) { if (defined(my $sub = $self->can($token))) { $self->$sub($params{$token}); } else { warn "We don't have any \"$token\" thingies 'round these p +arts!\n"; } } return $self; }
When I'm feeling this paranoid, I usually keep around a list of valid fields, but this is a good approach. The only drawback I see is that someone can call an arbitrary (non-accessor) method by passing the right parameters to the constructor.

There are ways to get around that, too.