use strict; use warnings; use Data::Dumper; use constant E_MESYSTEM => 1; use constant E_MEENTITY => 2; my %element_type = ( system => E_MESYSTEM, entity => E_MEENTITY, ); my %generator_lookup = ( E_MESYSTEM => 'G_SYSTEM_SYSTEM_ID', E_MEENTITY => 'G_ENTITY_ENTITY_ID', ); print Dumper(\%element_type); print Dumper(\%generator_lookup); __END__ #Ouput correct $VAR1 = { 'system' => 1, 'entity' => 2 }; #Output incorrect $VAR1 = { 'E_MESYSTEM' => 'G_SYSTEM_SYSTEM_ID', 'E_MEENTITY' => 'G_ENTITY_ENTITY_ID' };