We'll cover these points now in more depth. Outside the class package, the reference is generally treated as an opaque value that may only be accessed through the class's methods. A constructor may rebless a referenced object currently belonging to another class, but then the new class is responsible for all cleanup later. The previous blessing is forgotten, as an object may only belong to one class at a time. References are not.
Objects know which package they belong to.
References do not. You just use a package as a class by putting method definitions into the class. This is how Perl implements inheritance. If a missing method is found in one of the base classes, it is cached in the current class for efficiency. If that doesn't work, Perl finally gives up and complains.