#!/usr/bin/perl use strict; use warnings; my %dtree = ( L1 => { L2b => {L2b1 => {}, L2b2 => {}}, L2a => {L3b => {L4a => {}}, L3a => {}} }, L3b => {L4a => {}}, L2b => {L2b1 => {}, L2b2 => {}}, L2a => {L3b => {L4a => {}}, L3a => {}} ); processDtree(\%dtree); sub processDtree { my ($rh_dtree, @nodes) = @_; print join ('.', map {"nested-$_"} @nodes), "\n" if @nodes; processDtree ($rh_dtree->{$_}, @nodes, $_) for sort keys %$rh_dtree; }