for my $key1 (keys %$returnedData) { for my $key2 (keys %{$returnedData->{$key1}}) { print "$key1.$key2 = $returnedData->{$key1}->{$key2}\n"; } } #### C:\tmp>type erick.pl my $returnedData = { key1 => { key5 => 'data1', key6 => 'data2', key7 => 'data3', key8 => 'data4', }, key2 => { key9 => 'data5', key10 => 'data6', key11 => 'data7', key12 => 'data8', }, key3 => { key13 => 'data9', key14 => 'data10', key15 => 'data11', key16 => 'data12', }, key4 => { key17 => 'data13', key18 => 'data14', key19 => 'data15', key20 => 'data16', }, }; for my $key1 (keys %$returnedData) { for my $key2 (keys %{$returnedData->{$key1}}) { print "$key1.$key2 = $returnedData->{$key1}->{$key2}\n"; } } C:\tmp>erick.pl key2.key10 = data6 key2.key12 = data8 key2.key9 = data5 key2.key11 = data7 key4.key19 = data15 key4.key18 = data14 key4.key17 = data13 key4.key20 = data16 key1.key5 = data1 key1.key6 = data2 key1.key8 = data4 key1.key7 = data3 key3.key15 = data11 key3.key13 = data9 key3.key14 = data10 key3.key16 = data12