%hash = map { join( q{ }, $fname[$_], $lname[$_] ) => $state[$_] } 0 .. $#fname; #### @hash{ map{ join q{ }, $fname[$_], $lname[$_] } 0 .. $#fname } = @state; #### use List::MoreUtils qw( zip pairwise ); # ... %hash = zip @{[ pairwise { join q( ), $a, $b } @fname, @lname ]}, @state; #### @hash{@names} = @states;