Because an object does not match the definition of a hash key in Perl, viz. 'Hashes are unordered collections of scalar values indexed by their associated string key'. You can also use a number or filehandle as a hash key, but don't expect to use the keys as anything other than strings without some manipulation.
Just like with ordered hashes, using hashes with non-string keys needs programming on your part (perhaps overloading stringification for your object and providing a way to get your object back from the string) or others (CPAN). Or you could overload (or just add to) the object and provide an accessor for your value so you can set it on the object itself.