@keys=qw/one two three/; $e = '%hash = (' . (shift @keys) . '=>'; $e .= '{' . $_ . '=>' for @keys; $e .= '1'; $e .= '}' for @keys; $e .= ');'; eval $e; use Data::Dumper; print Dumper \%hash;