use Data::Dumper; my %index1 = ( 1 => 'foo', 2 => 'bar', 3 => 'baz', ); print Dumper \%index1; #looks as expected my $index = q{ 1 => 'foo', 2 => 'bar', 3 => 'baz', }; print Dumper $index; #looks as expected my %index2; eval{ %index2 = ( $index ) }; print Dumper \%index2; #hash has one key ($index) and value undef __END__