Range::Object version 0.93 ========================== This suite of modules implements unified API for manipulating ranges of objects of different kinds. In terms of Range::Object namespace, a range is defined as a set of items, either disjointed (individual) or contiguous, or a combination of separate items and ranges. Intersecting or adjacent ranges are not supported directly and will be collapsed silently into wider contiguous range. Although Range::Object descendant module can store any number of separate values (objects) and ranges, it is optimized for storing contiguous ranges of arbitrary length with minimal memory and storage footprint; the other effect of this being fast serialization and deserialization of Range::Object instances. It cannot come without cost though; Range::Object uses more CPU cycles than similar hash-based modules. Good application for this kind of object storage can be an implementation of user permission tables for large number of objects, especially if such permissions are typically assigned in large contiguous ranges. For example, if an user has read permission for objects 1-10000 and write permission for objects 1-100, 200-300 and 1000-9999, storing these identificators as hash keys is memory expensive, and can become prohibive when number of tables and users increase. Compared to that approach, Range::Object can be a reasonable compromise between memory and CPU utilization. This module also comes useful for user input validation when dealing with HTML forms or something similar. INSTALLATION To install this module type the following: perl Makefile.PL make make test make install DEPENDENCIES This module requires these other modules and libraries: Test::More List::Util COPYRIGHT AND LICENSE Copyright (C) 2011 by Alexander Tokarev. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.6.0 or, at your option, any later version of Perl 5 you may have available.