#! perl use strict; use warnings; use Hash::Flatten 'flatten'; my %meows = ( kittehs => { purr => 'happy', hiss => 'mad', weather => { tailflic => 'rain', shaking => 'a doosy', }, }, ); my $flat_meows = flatten(\%meows); my @keys = qw(kittehs weather tailflic); my $new_key = join '.', @keys; printf "\$meows{%s} = %s\n", $new_key, $flat_meows->{$new_key};