#!/usr/bin/perl use strict; use warnings; my %HOH = ( Pegname1 => { section1 => { val1 => 'Value 1' }, section2 => { val2 => 'Value 2' }, section3 => { val3 => 'Value 3' }, }, Pegname2 => { section1 => { val1 => 'Value 1' }, section2 => { val2 => 'Value 2' }, section3 => { val3 => 'Value 3' }, } ); # question 2 - add a new value $HOH{Pegname3}{section1}{val1} = 'Value 1'; # question 2 - add a new record my $record = { section1 => { val1 => 'Value 1' }, section2 => { val2 => 'Value 2' }, section3 => { val3 => 'Value 3' }, }; $HOH{Pegname3} = $record; # question 1 - traverse the data structure for my $peg (sort keys %HOH){ print "$peg\n"; for my $section (sort keys %{$HOH{$peg}}){ print "\t$section\n"; for my $val (sort keys %{$HOH{$peg}{$section}}){ print "\t\t$val\n"; } } } __DATA__ ---------- Capture Output ---------- > "C:\Perl\bin\perl.exe" _new.pl Pegname1 section1 val1 section2 val2 section3 val3 Pegname2 section1 val1 section2 val2 section3 val3 Pegname3 section1 val1 section2 val2 section3 val3 > Terminated with exit code 0.