Term/Interact version 0.50
==========================

NAME
   Term::Interact - Interactively Get Validated Data

SYNOPSIS
   use Term::Interact;

   my $ti = Term::Interact->new( @args );

   # get validated data interactively
   $validated_data = $ti->get( @args );

   # check existing data non-interactively
   die "Invalid!" unless $ti->validate( $data, @args );

DESCRIPTION
   Term::Interact enables you to interactively get validated
   data from a user.  This is accomplished via a *simple*
   API, wherein you specify various parameters for prompting
   the user, as well as "checks" with which gotten data will
   be validated.

   VARIETIES OF CHECKS:

     Term::Interact comes with support for six varieties of check
     expressions:

     sql_check
       *str*: A SQL statement (i.e. 'SELECT field FROM table'). Will be
       used to generate a list of validation values from a database. Valid
       data is that which appears in the list.

     regex_check
       *qr//*: A compliled regular expression used to validate data. Valid
       data is that which matches the regular expression.

     list_check
       *aref*: An aref of values used to validate data. Valid data is that
       which appears in the list.

     compare_check
       *str*: A comparison test in string form. Valid data is that which
       satisfies the comparison test.

     filetest_check
       *str*: A filetest operator in string form. Valid data is that which
       satisfies the filetest operator.

     custom_check
       *coderef*: For special occasions (or to make use of Perl's built in
       functions), you can write your own custom check. This must be a
       reference to a function that accepts one value and returns true if
       that value is valid. Example: check => [ sub{getgrnam shift}, '%s is
       not a valid group' ]

   NOTE ON AVAILABLE CHECK TYPES:
         This module steers clear of offering explicit checks like
         'phone_number_check' or 'email_address_check'. In the author's
         opinion one may generally obtain all the convenience and code
         readability one needs via the built in varieties of checks.
         However, if you have regular need for complex additional checks,
         you'll likely want to steer clear of the built in custom_check
         option (see above), which is most appropriate for small anonymous
         subroutines, especially those which make use of Perl's built in
         functions. You can permanently add complex custom checks by
         subclassing Term::Interact and providing the desired checks as
         subroutines (all the check subs follow a simple API, just follow
         the pattern from the source code). Additionally you will need to
         modify the private _classify_check_type function.

ONE EXAMPLE

    my $num1 = $ti->get(
        msg         => 'Enter a single digit number.',
        prompt      => 'Go ahead, make my day: ',
        re_prompt   => 'Try Again Here: ',
        check       => [
                         qr/^\d$/,
                         '%s is not a single digit number!'
                       ]
    );
    #
    # Resulting Interaction looks like:
    #
    # Enter a single digit number.
    #    Go ahead, make my day: w
    #    'w' is not a single digit number!
    #    Try Again Here: 23
    #    '23' is not a single digit number!
    #    Try Again Here: 2

DOCUMENTATION
   For more examples and full documentation, see
   perldoc Term::Interact

INSTALLATION
   To install this module type the following:
     perl Makefile.PL
     make
     make test
     make install

DEPENDENCIES
   This module requires these other modules:
     Text::Autoformat
     Term::ReadKey
     Date::Manip
     File::Spec

COPYRIGHT AND LICENCE
   Copyright (C) 2002-2009 Phil R Lawrence.  All rights reserved.

   This module is free software; you can redistribute it
   and/or modify it under the same terms as Perl itself.