use Data::Dumper; my %h = ( foo => 42, bar => { x => { u => 1, v => 2 }, y => 'blubb' } ); print Dumper \%h; hpush %h, 1, ( baz => 23, bar => { x => { w => 3 }, z => 'blargh' } ); print Dumper \%h;