use strict; use warnings; use Data::Leaf::Walker; my %data = ( File_Handler => { Compile_File => undef, Log_Details => undef, Complete_Logging => undef, Get_Config => undef, Get_Data => undef, Get_Abc_Data => undef, Start_File_Handler => undef, Internal_Operations => { Get_Abc_Data => undef, Start_Operations => undef, Get_Start_Up_Data => undef, Construct_Failure_Ident => undef, Construct_Additional_Words => undef, }, }, ); my $walker = Data::Leaf::Walker->new( \%data ); while ( my ( $k, $v ) = $walker->each ) { my $filename = join '.', @{$k}, '2.ada'; print $filename, "\n"; }