* Smylers <[EMAIL PROTECTED]> [2005-04-16 14:40]: > One nice way of dealing with this that I hadn't thought of till > I recently spotted in Text::VimColor (though it's probably used > in many places) is simply to bless the options hash, so you'd > end up with something like: > > unshift @_, 'initial' if @_ % 2; > my %opts = (countername => $countername, @_); > $opts{dsn} ||= $DSN, > $opts{login} ||= $LOGIN, > $opts{password} ||= $PASSWORD, > $opts{tablename} ||= $TABLENAME || 'counters', > $opts{initial} ||= '0', > bless \%opts, $pkg;
unshift @_, 'initial' if @_ % 2; my %param = @_; my %default = ( dsn => $DSN, login => $LOGIN, password => $PASSWORD, tablename => $TABLENAME || 'counters', countername => $countername, initial => '0', ); my @allowed = ( keys %default, qw( and others more ) ); my %self; @self{ @allowed } = @param{ @allowed }; $self{ $_ } ||= $default{ $_ } for keys %default; bless \%self, $pkg; VoilÃ: each key and each default mentioned exactly once. Regards, -- #Aristotle *AUTOLOAD=*_=sub{s/(.*)::(.*)/print$2,(",$\/"," ")[defined wantarray]/e;$1}; &Just->another->Perl->hacker;