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.