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 parts!\n"; } } return $self; }