Subject: ANNOUNCE: Query.pm; Perl 5 module for generalized queries
From: Alan Stebbens <[email-masked]>
Date: 21 Sep 1995 14:35:35 GMT
Newsgroups: comp.lang.perl.announce,comp.lang.perl.misc

This is to announce a new Perl 5 module, Query.pm, which is available at 

    ftp://hub.ucsb.edu/pub/prog/Query.shar

The following is the README file accompanying it.

	     ------------------------------

This file describes the Query.pm Perl 5 module, which performs
generalized queries on various kinds of values.  Validation and
normalization of input, based on the type, is automated, as is
error reporting and re-solicitation of input.

Input of '?', unless configured otherwise, provides useful,
helpful information, based on the expected input type, even in
the absence of a programmer-supplied help string.

There is one primary subroutine, called "query", which is passed
a prompt and some "flags", optionally followed by addtional
arguments, depending upon the particular flags.

The flags are single characters which indicate:

    * input type: integer, real, string, yes-no, keyword, or 
      non-keyword;

    * default input, in the absence of user input;

    * help string, to be reported for errors or input of 
      '?';

    * input validation, such as regexp matching, maximum 
      length, and "check" subroutine calls;

    * input handling, such as blank squeezing, and "before" 
      subroutine calls.

    * name of the variable to be set with the validated input.

An accompanying subroutine, query_table, can be passed an array
of of arguments which will be interatively passed to query,
allowing for easy generation of table-driven query-response input
routines.

The subroutine query_table_set_defaults can be used on a query
table array to cause any mentioned variables to be initialized
with any mentioned default values.  This is handy for having a
single table defining variables, their default values, and the
validation criteria for setting new values.

The subroutine query_table_process can be used on a query table
array to process the array in a complete general fashion.

Complete details are provided within the module, in the Perl 5
"pod" format.  Traditional man pages are available with the
command:

    pod2man Query.pm | nroff -man -

The code was developed and requires Perl5.001m (eg: it uses
references).

The library is available under the GNU General License, Version
2, and is located at:
	
    ftp://hub.ucsb.edu/pub/prog/Query.shar

Suggestions or improvements are welcome.
_______________________________________
Alan K. Stebbens <[email-masked]>
College of Engineering
University of California, Santa Barbara