OK, why is {0+$ref} faster? I can see the different semantics... $hash{$ref} converts the ref to a string, while $hash{0+$ref} converts the ref to a number and then to a string. A quick test shows that converting a ref to a number returns (no surprise) a number, probably the machine address of an underlying unique piece of data in the interpreter, the same as the hex value shown in the stringification form.