item 1 # as read from file $key = "k1"; $valname = "vname1"; $value = "v1"; $type = "t1"; $flag = "f1"; $hash{ $key } = ( { $valname => [ $value, $type, $flag ] }); item 2 $key = "k1"; $valname = "vname2"; $value = "v2"; $type = "t2"; $flag = "f2"; $hash{ $key } = ( { $valname => [ $value, $type, $flag ] }); item 3 $key = "k3"; $valname = "vname3"; $value = "v3"; $type = "t3"; $flag = "f3"; $hash{ $key } = ( { $valname => [ $value, $type, $flag ] }); item N (indeterminate until runtime) #### k1 => vname1 => (v1, t1, f1) vname2 => ( v2, t2, f2 ) k3 => vname3 => ( v3, t3, f3 ) #### foreach $i (keys %hash) { print "i=$i\n"; foreach $j (keys %{$hash{$i}} ) { @content = $hash{$i}->{$j}; #print "\tvalname=$j content=$$hash{$i}->{$j}[1] \n"; print "\tj=$j val=$hash{$i}->{$j}[0] type=$hash{$i}->{$j}[1] flag=$hash{$i}->{$j}[2] \n"; print "$content[0] $content[1] $content[2]\n"; } }