Perl has always been a powerful and popular programming language, but with its new object capabilities, it can do even more. Written for anyone with a little Perl experience, Damian Conway's Object Oriented Perl provides an invaluable guide to virtually every aspect of object-oriented programming in Perl.
The most notable thing about Object Oriented Perl is Conway's excellent perspective on object-oriented concepts and how they are implemented in Perl. This book does a remarkable job of cutting through traditional jargon and illustrating how basic object-oriented design techniques are handled in Perl. (A useful appendix attests to the author's wide-ranging knowledge, with a comparison of Smalltalk, Eiffel, C++, and Java with Perl, including a summary of object-oriented syntax for each.) This book also features a truly excellent review of basic Perl syntax.
Throughout this text, the author shows you the basics of solid object design (illustrated using classes that model music CDs). Basic concepts like inheritance and polymorphism get thorough and clear coverage. The book also points out common mistakes and provides many tips for navigating the powerful and flexible (yet sometimes tricky) nuances of using Perl objects. For instance, Conway shows how to achieve true data encapsulation in Perl (which generally allows calls across modules) as well as its natural support for generic programming techniques.
He also pays special attention to popular object modules available from CPAN (like Class::MethodmakerK, which simplifies declaring classes) and discusses performance issues and the tradeoff between programming convenience and speed often faced by today's Perl developer. Advanced chapters cover a number of techniques for adding persistence and invoking methods using multiple dispatching.
Filled with syntactic tips and tricks, Object Oriented Perl is a sure bet for any programmer who wants to learn how to use Perl objects effectively. --Richard Dragan
Topics covered: Perl language review, CPAN, Perl objects, 'blessing' and inheritance, polymorphism, Class::Struct and Class::Methodmaker modules, Perl ties and closures, operator overloading, encapsulation, multiple dispatch, Class::Multimethods, coarse-grained and fine-grained object persistence techniques, performance issues. [via]