use Data::Dumper; $a = "fruits"; $b = "birds"; $c = "p"; $d = "g"; $e = "c"; $array1{$a}{$c}= [ "peach" ]; $array1{$a}{$d}= [ "grapes" ]; $array1{$b}{$c}= [ "parrot" ]; $array1{$b}{$e}= [ "crow" ]; print Dumper %array1;