my @r = (1, 2, undef, 3, 4); my %h; for(qw/abc def ghi jkl mno/) { if(defined $r[0]) { $h{$_} = shift @r; } else { $h{$_} = ""; } } print Dumper \%h; __output__ $VAR1 = { 'def' => 2, 'abc' => 1, 'mno' => '', 'jkl' => '', 'ghi' => '' };