Most recent changes on top. Sun Jul 1 18:42:12 EDT 2007 - Removed test bug. Mon Jun 6 02:12:02 EDT 2005 - Added README to the manifest... Sun Jun 5 22:29:59 EDT 2005 - Replace eval's of datatypes to get base data type with Scalar::Util. That module is stable enough to be reasonably installed along with this one and simplifies this code quite a bit. Tue Sep 28 14:20:05 EDT 2004 - Fix POD typos. - Add README Sat Sep 25 02:44:18 EDT 2004 - Update the Makefile.PL description. - Added NEXT to the required modules. Sat Sep 25 01:28:29 EDT 2004 - Single array type didn't cut it. Split them into queue and stack. Both push the data at each step, queue uses EVERY::init stack uses EVERY::LAST::init. Difference is that given a base class with qw( a b c ) and derived of qw( d e f ) the stack ends up with qw( d e f a b c ) where the queue has qw( a b c d e f ). From test.pl: Given: package MyArray; use NEXT::init [ qw( a b c ) ]; package Queue; use base qw( MyArray ); use NEXT::init qw( :type=queue d e f ); package Stack; use base qw( MyArray ); use NEXT::init qw( :type=stack d e f ); Running the code: my $obj8 = Queue->construct( qw( queue ) ); my $obj9 = Stack->construct( qw( stack ) ); Yields: Queue vs. Stack: bless( [ 'queue', 'd', 'e', 'f', 'a', 'b', 'c' ], 'Queue' ) bless( [ 'a', 'b', 'c', 'd', 'e', 'f', 'stack' ], 'Stack' ) - Removed merge, the constructor and a single init are all that's required. - *meta is reused for both the data (hash or array) and a method that returns the referent. Main use of the sub is to get something un-blessed to determine the base data type to use for an object. - init's use @{*$meta} and %{*$meta} to grab current values -- original code used the internal data referent which led to static data. This allows a class that uses N::i to modify its metadata on the fly and have new object utilize the updated data. - Base data types (ones without a use base that involves N::i) must be passed as referents or specified via :type=[hash|queue|stack]. This ensures that the data is initialized properly. Probably the simplest way is to pass the most-basic data as referents in all cases and use the 'stack' type only when necessary (arrays default to queue). After that use simple lists for derived types and let the import handle the rest for itself. - Comments. - POD. Tue Sep 7 18:57:45 EDT 2004 - Replace no strict 'refs' with Symbol. - Comments. - Arg's can now be :foo=bar to set base type of object. - Install &meta to return metadata referent. Allows ref $obj->meta to get a base type for data-less objects. Fri Aug 13 15:10:08 EDT 2004 - Initial release. Code tested in-house, interface seems stable.