my @loop_data = (); foreach my $array_ref(@data) { my @inner_loop = (); foreach my $element (@$array_ref) { push(@inner_loop,{var1=>$element}); } push(@loop_data,{loop2=>\@inner_loop}); } #### my @loop_data = map { {loop2=> [map { {var1=>$_ } } @$_ ] } } @data;