sub _set { my $self = shift; my ($key, $value); while (($key, $value) = splice @_, 0, 2) { $self->{$key} = $value } } #### c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "sub _set { my $self = shift; %$self = (%$self, @_); } ;; my $hr = bless { qw(y 25 z 26) }; ;; $hr->_set(qw(a 1 b 2 c 3)); dd $hr; " bless({ a => 1, b => 2, c => 3, "y" => 25, z => 26 }, "main")