k1 => vname1 => [ v1, t1, f1 ] # note: I changed the () to [] vname2 => [ v2, t2, f2 ] k3 => vname3 => [ v3, t3, f3 ] #### # Assign an array (ref) to the HoH value $hash{$key}{$valname} $hash{$key}{$valname} = [ $value, $type, $flag ]; # option 1 @{ $hash{$key}{$valname} } = ( $value, $type, $flag ); # option 2 #### my $type = ${ $hash{$key}{$valname} }[1]; # individual value my @array = @{ $hash{$key}{$valname} }; # all values #### foreach my $key ( keys %hash ) { print "$key:\n"; foreach my $valname ( keys %{ $hash{$key} } ) { print " $valname: "; print join( "\t", @{ $hash{$key}{$valname} } ), "\n"; } } #### use Data::Dumper; print Dumper( \%hash );