The script does a naieve conversion of an AutomatedArchive hash database file; it just copies the data Field by Field, which makes the most sense, but something I will have to keep in mind for later, when using such converted databases.
Also, as part of this, added set_from_hash in Tie::FieldVals::Row.
Now Tie::FieldVals::Select is a proper sub-class of Tie::FieldVals. Also renamed Tie::FieldVals::Join::Row to be Tie::FieldVals::Row::Join and made it a proper sub-class of Tie::FieldVals::Row.
I realized that, when I was using them, there were really only two ways I wanted to access the Tie::FieldVals::Row hashes: either as a reference to an array, because I wanted to go through every multi-valued item one at a time; or as a single scalar value (such as when printing out or comparing values). Also because the $hash{$key=>$something} method of accessing things was annoying, because Perl kept on saying it was a syntax error, I simplified both FETCH and STORE operations for Tie::FieldVals::Row (and Tie::FieldVals::Join::Row).
Now there are three modes of FETCHing and two ways of STOREing.
The FETCH operation accepts:
The STORE operation only allows simple scalar keys, and accepts either a scalar or a reference to an array for the stored value.
Added two more sort types, "title" and "lastword". This now eliminates the need to "nice-ify" fields because they'd been reversed for sort-order considerations, such as authors with Lastname,Firstname (can now be sorted with a "lastword" sort) or titles starting with "The" or "A" can now be sorted with "title" sort (which ignores the initial "The" or "A").
One needs to set the mode to O_RDWR|O_CREAT and to give the field names, if one is creating the file; the default setup is still for a file which already exists.
Basically uses the file locking of Tie::File.
Not just the script but the tests for it.
Added some more stuff to the DESCRIPTION comparing this to other kinds of data files.
Set a separate boringfile so that it considers the perl build files to be boring.
Setting the pre-build stuff, and auto-generating TODO and README.
Removing some warnings and making safer.
Fixed Row so that numeric compares of empty strings are done as a zero. Added tests of simple functionality and selection.
This is stuff extracted out of the GenRepAr suite, and made into independent modules.