use diagnostics -verbose; while( my ( $key, $value ) = each %$data_a ){ $data_b->{ $key } = $value } printf "%10s%12s\n", 'key:', ':value'; while( my ( $k, $v ) = each %$data_b ){ my $c; printf "%9s%-8s%-11s\n", $k, ++$c % 2 == 1 ? ' --- ' : '', $v; } __END__ key: :value house --- main first Mary number --- 0123 area north fullname --- Ms Mary Lou last Lou code --- zip