The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Class::Accessor::Fast::Contained - Fast accessors with data containment


This document refers to version 1.01 of Class::Accessor::Fast::Contained


 package Foo;
 use base qw(Class::Accessor::Fast::Contained);

 # The rest is the same as Class::Accessor::Fast


This module does two things differently to the venerable Class::Accessor::Fast :

  • Fields are stored at arms-length within a single hash value of $self, rather than directly in the $self blessed referent.

  • new() allows mixin into an existing object, rather than creating and returning a new blessed hashref. To do this, just call something like:

     my $self = Some::Other::Class->new;
     $self = $self->Class::Accessor::Fast::Contained::new;

    Note that the mixin code only supports objects which use a blessed hash reference or a blessed typeglob reference.

    An alias setup() is available which does the same as new() but might make more sense if being used in this way.


Other than the standard Perl distribution, you will need the following:

  • Class::Accessor


If you spot a bug or are experiencing difficulties that are not explained within the documentation, please send an email to or submit a bug to the RT system ( It would help greatly if you are able to pinpoint problems or even supply a patch.




Oliver Gorwits <>


Thanks to Marty Pauly and Michael G Schwern for Class::Accessor and its tests, which I've shamelessly borrowed for this distribution.


Copyright (c) The University of Oxford 2008.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.