[comp.lang.perl] Jinx, an interactive database tool in Perl

henkp@ruuinf.cs.ruu.nl (Henk P. Penning) (09/09/90)

I have put together a system for manipulating simple databases.
It is called 'jinx'. I wrote it for the secretaries at our department.
Jinx is easy to use but has powerful relational facilities as well.

Jinx is an interactive, menu-driven program which handles databases
consisting of lists of records, each a list of fields.
In a given database, every record contains the same number of fields.
In short, a database is structured like the /etc/passwd file.
For each field a regexp may be specified which is used as a constraint on the
data which may be entered in the field. Users may override this constraint.

There is no limit on the number of records in a database,
or the number of fields in a record, or the length of a field.
A field may contain arbitrary ascii-printable data.
Jinx uses curses so it runs on any terminal or window of any size.
Jinx doesn't require a 'special' perl, plain PL.18+ will do.

With Jinx you can perform operations on a database like:
-- update, add, copy and delete records
-- test if all fields in all records match their associated regexp
-- select/delete a subset of the records by various means
-- put back some of the deleted records
-- sort the database on one or more key-fields
-- project on one or more columns
-- join with another database
-- add a column to the database (that is: add a field to every record)
-- insert some records from another database
-- test if some given combination of fields is uniq for all records
-- compute fields as a function of other fields in the record

A database is represented by two files, both of them ordinary, editable files.
A simple report generator is provided. Some of the main functions are available
as shell-callable perl scripts.

Jinx requires the 'cterm' package I posted earlier. Jinx and cterm are
available from our archive server sol.cs.ruu.nl (131.211.80.5).
If you have ftp, get 'cterm.shar.Z' and 'jinx.shar.Z' from directory 'pub/UNIX'.
If not, send a message to 'mail-server@cs.ruu.nl' containing the next 4 lines:
begin
send UNIX/cterm.shar
send UNIX/jinx.shar
end
The mail-server will send you the compressed, uuencoded stuff.
Jinx+tools+man+doc is about 4500 lines, (compressed 60 KB).
A jinx tutorial (in LaTeX) is included in the package.
A PostScript version is available in 'UNIX/jinx.ps' in our archive.

Please, try out Jinx and let me know what you think.

				===  HenkP  ===

PS. Jinx is distributed under the terms of the Gnu General Public Licence.

-- 
Henk P. Penning, Dept of Computer Science, Utrecht University.
Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands.
Telephone: +31-30-534106
e-mail   : henkp@cs.ruu.nl (uucp to hp4nl!ruuinf!henkp)