this class allow you to create a record type, and then create instances of that record. why? because records look like hashes, using descriptive strings as keys to get/put data. But instances of the record type are implemented using arrays to save memory. # declare what a record will look like for a mailing label. my $mailing_label = New FlexibleRecordType('Name', 'State', 'ZIP'); # create instances of the record type my %home_address; $mailing_label->Instance(\%home_address); $home_address{'Name'} = 'Greg'; $home_address{'State'} = 'XI'; $home_address{'ZIP'} = '12345'; my %work_address; $mailing_label->Instance(\%work_address); $work_address{'Name'} = 'Mr. London'; $work_address{'State'} = 'QA'; $work_address{'ZIP'} = '33333'; my %play_address; $mailing_label->Instance(\%play_address); $play_address{'Name'} = 'Chopper'; $play_address{'State'} = 'DO'; $play_address{'ZIP'} = '98765'; the mailing label object defines the type, defining what the hash elements are. home_address, work_address, and play_address are all instances of the mailing label type. the three instances look and behave like hashes, but underneath, they are actually implemented using arrays. version 0_1 of this module used simple classes and methods to implement the behaviours. this version is the first attempt to implement the concept using a tied hash. underneath the hood, the type object keeps a hash to translate keys into array indexes for the instances. It also keeps an array which stores all instances of the record type. this allows for the record type to delete a key completely. i.e. the type object goes through all instances of the type and 'unsplices' that index from the array. thus removing it from existence as if it were a normal hash. this class was created as a way to improve pseudo-hashes, which attempts to implement hash like behaviour with array like memory efficiency. consider it more a proof of concept class than an actual implementation package. Greg