In Perl 5, as in most other OOP languages, the basic unit of encapsulation is the object.
Each Perl 5 object is described by a class that defines its methods (Perl subroutines) and fields (regular Perl variables). Classes may be inherited from and instantiated.
Instantiated objects in Perl are simply references that have knowledge of which class they belong to.
Since object methods are simply Perl subroutines, polymorphism can be handled by discerning what type of information is passed to the subroutine.
Let's look at the innards though. it will be more clear when we can see how this thing actually works