The term Adapter refers to a Design Pattern of the same name,
from the famous Gang of Four book Design Patterns. Although
their original implementation was designed for Java and similar
single-inheritance strictly-typed langauge, the situation for which it
applies is still valid.
An Adapter in this Perl sense of the term is when a class is created
to achieve by composition (objects containing other object) something that
cant be achieved by inheritance (sub-classing).
This is similar to the Decorator pattern, but is intended to be
applied on a class-by-class basis, as opposed to being able to be applied
one object at a time, as is the case with the Decorator pattern.
The Class::Adapter object holds a parent object that it wraps,
and when a method is called on the Class::Adapter, it manually
calls the same (or different) method with the same (or different)
parameters on the parent object contained within it.
Instead of these custom methods being hooked in on an object-by-object
basis, they are defined at the class level.
Basically, a Class::Adapter is one of your fall-back positions
when Perls inheritance model fails you, or is no longer good enough,
and you need to do something twisty in order to make several APIs play
nicely with each other.
Well... nothing really. It exist to provide some extremely low level
fundamental methods, and to provide a common base for inheritance of
The base Class::Adapter class doesnt even implement a way to push
method calls through to the underlying object, since the way in which
<B>thatB> happens is the bit that changes from case to case.
To actually DO something, you probably want to go take a look at
Class::Adapter::Builder, which makes the creation of Adapter
classes relatively quick and easy.