Stefano Crocco wrote in post #1128478:
> Excerpts from Love U Ruby's message of 2013-11-24 17:26:40 +0100:
>>       '2' => 200
>> #     "50p test",
>>
> Since Strings are so commonly used as keys and that having mutable
> objects as hash keys requires caution, when Hash#[]= is given a string
> key it duplicates it, freezes the copy and uses the copy as key. When
> you call force_encoding on the key, it fails because it can't modify a
> frozen string. On the other hand, e + ' test' doesn't modify the string> e; rather it creates a new (not frozen) string which is composed by the> content of e and the content of ' test'.

Thanks for your point!! Yes I confirmed the same as below :

hsh = {
      '1p' => 1,
      '2p' => 2,
      '5p' => 5,
      '10p' => 10,
      '20p' => 20,
      '50p' => 50,
      '1' => 100,
      '2' => 200
    }

hsh.key(1).object_id # => 70011540
hsh.keys.each_with_object({}){|e,h| h[e]=e.object_id}['1p']
# => 70011540

Actually http://www.ruby-doc.org/core-2.0.0/Hash.html#method-i-keys says gives us a new array, which I misunderstood something wrong way..

Again thank you very much.