It implements inside-out objects as anonymous scalar references that have been blessed into a class with the scalar containing the ID for the object (usually a sequence). Object data (i.e., fields) are stored in arrays (or hashes) within the class's package and are indexed on the object's ID.
This module offers all the capabilities of Class::Std with the following additional key advantages:
-> Speed - When using arrays for storing object data, Object::InsideOut objects are as much as 40% faster than blessed hash objects for fetching and setting data, and even with hashes they are still several percent faster than blessed hash objects.
For the same types of operations, Object::InsideOut objects are from 2 to 6 times faster than Class::Std objects.
-> Threads - Object::InsideOut is thread safe, and thoroughly supports sharing objects between threads using threads::shared. Class::Std is not usable in threaded applications (or applications that use fork under ActivePerl).
-> Flexibility - Allows control over object ID specification, accessor naming, parameter name matching, and more.
-> mod_perl and Runtime Loading - Usable from within mod_perl, and supports classes that may be loaded at runtime (i.e., using eval { require ...; };).
-> Perl 5.6 - Usable with Perl 5.6.0 and later. Class::Std is only usable with Perl 5.8.1 and later.
-> Exception Objects - As recommended in 'Perl Best Practices', Object::InsideOut uses Exception::Class for handling errors in an OO-compatible manner.
-> Object Serialization - Object::InsideOut has built-in support for object dumping and reloading that can be accomplished in either an automated fashion or through the use of class-supplied subroutines.