use warnings; use strict; my @a1 = map{"k$_"} 1..3; my @a2 = map{"m$_"} 1..3; my @a3 = map{"d$_"} 1..3; my $href; for my $i (0 .. $#a1) { $href->{$a1[$i]} = {Metadata => $a2[$i], Submitted => $a3[$i]}; } use Data::Dumper; $Data::Dumper::Sortkeys=1; print Dumper($href); __END__ $VAR1 = { 'k1' => { 'Metadata' => 'm1', 'Submitted' => 'd1' }, 'k2' => { 'Metadata' => 'm2', 'Submitted' => 'd2' }, 'k3' => { 'Metadata' => 'm3', 'Submitted' => 'd3' } };