NAME Class::Accessor::PackedString - Generate accessors/constructor for object that use pack()-ed string as storage backend VERSION This document describes version 0.001 of Class::Accessor::PackedString (from Perl distribution Class-Accessor-PackedString), released on 2017-09-01. SYNOPSIS In lib/Your/Class.pm: package Your::Class; use Class::Accessor::PackedString { # constructor => 'new', accessors => { foo => "f", bar => "c", }, }; In code that uses your class: use Your::Class; my $obj = Your::Class->new; $obj->foo(1.2); $obj->bar(34); or: my $obj = Your::Class->new(foo => 1.2, bar => 34); $obj is now: bless(do{\(my $o = pack("fc", 1.2, 34))}, "Your::Class") To subclass, in lib/Your/Subclass.pm: package Your::Subclass; use parent 'Your::Class'; use Class::Accessor::PackedString { accessors => { %Your::Class::HAS_PACKED, baz => "a8", qux => "a8", }, }; DESCRIPTION This module is a builder for classes that use pack()-ed string as memory storage backend. This is useful in situations where you need to create many (e.g. thousands+) objects in memory and want to reduce memory usage, because string-based objects are more space-efficient than the commonly used hash-based objects. The downsides are: 1) you have to predeclare all the attributes of your class along with their types (pack() templates); 2) you can only store data which can be pack()-ed; 3) slower speed, because unpack()-ing and re-pack()-ing are done everytime an attribute is accessed or set. HOMEPAGE Please visit the project's homepage at . SOURCE Source repository is at . BUGS Please report any bugs or feature requests on the bugtracker website When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. SEE ALSO Class::Accessor::PackedString::Set AUTHOR perlancar COPYRIGHT AND LICENSE This software is copyright (c) 2017 by perlancar@cpan.org. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.