use strict; use warnings; use Data::Dumper; my @array_names = qw (a b c d e f); my $h_arrays = { }; for my $name (@array_names) { $h_arrays->{$name} = [ $name ]; } printf "I've now got these arrays in \$h_arrays: %s\n", Dumper($h_arrays); __END__ Output: I've now got these arrays in $h_arrays: $VAR1 = { 'e' => [ 'e' ], 'c' => [ 'c' ], 'a' => [ 'a' ], 'b' => [ 'b' ], 'd' => [ 'd' ], 'f' => [ 'f' ] };