sub with(\%%) { my ($hash, %values) = @_; $hash->{$_} = $values{$_} foreach keys %values; } $anonhash = { id => 'u1234', }; with %$anonhash, do { name => 'dave', city => 'San Francisco', phone => '555-1212', hobbies => [ qw( Perl Anime ) ], }; require Data::Dumper; print(Data::Dumper::Dumper($anonhash)); __END__ $VAR1 = { 'id' => 'u1234', 'name' => 'dave' 'city' => 'San Francisco', 'phone' => '555-1212', 'hobbies' => [ 'Perl', 'Anime' ], };