# means you must have a hash key 'loop1' with an array ref as its value # in the hash. %loop_data = ( loop1 => [ ..something.. ] ); # another loop, so each of these 'somethings' must have a hash key loop2 # pointing to a value of some array ref %loop_data = ( loop1 => [ { loop2 => [ ..something.. ] }, { loop2 => [ ..something.. ] }, ... ] ); # now each of these somethings must contain a hash key var1 pointing to # some scalar data. %loop_data = ( loop1 => [ { loop2 => [ { var1 => 'data'} ] }, { loop2 => [ { var1 => 'otherdata'} ] }, ... ] );