use strict; use warnings; use Data::Dumper; my $data = {status=>"ok",'message-type'=>"member",'message-version'=>"1.0.0"}; my $result_hr; unfold_hash($data, $result_hr); print Dumper $result_hr; sub unfold_hash { my ( $raw_hr, $res_hr ) = @_; for my $k ( keys %$raw_hr ) { $res_hr->{$k} = $raw_hr->{$k}; } print "unfold_hash ", $res_hr ? scalar %$res_hr : 0, "\n"; }