If you want to understand properly, divide the parsing into small steps. Make use of above reply by toolic. Below is the full parser for hash %TV
foreach my $k1 (keys %TV )
{
print "\n# Hash Key = $k1\n"; # flintstones, jetsons, simpsons
foreach my $v1 ($TV{$k1})
{
foreach my $k2 (keys %$v1)
{
print "## Hash Hash key = $k2\n"; # series, nights, member
+s
if(ref($$v1{$k2}) eq 'ARRAY')
{
foreach my $h (@{$$v1{$k2}})
{
if (ref($h) eq 'HASH')
{
foreach my $k3 (keys %$h)
{
print "$k3 => $$h{$k3}\n"; # member detail
+s
}
}
else
{
print "$h\n"; # night values
}
}
}
else
{
print "$$v1{$k2}\n"; # series value
}
}
}
}