We'll cover these points now in more depth. Outside the class package, the reference is generally treated as an opaque value that may be accessed only through the class's methods. A constructor may re-bless 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 belong to only one class at a time. References are not.
Objects know which package they belong to.
References do not. You 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.