Index of /cpan/authors/id/Y/YU/YUMPY/Shell-POSIX-Select-005/
Shell/POSIX/Select version 0.06
===============================
INSTALLATION
To install this module type the following:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
This module requires these other modules and libraries:
File::Spec::Functions
Text::Balanced
Filter::Simple
INSTALLATION TIP
This module can be difficult to install on many modern platforms.
However, there is a version that installs easily on Debian and Ubuntu-
based systems (and with some effort, possibly others), which you
can find at
http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=libshell-posix-select.
==================================================================
NAME
Shell::POSIX::Select - The POSIX Shell's "select" loop for Perl
PURPOSE
This module implements the "select" loop of the "POSIX" shells
(Bash, Korn, and derivatives) for Perl. That loop is unique in
two ways: it's by far the friendliest feature of any UNIX shell,
and it's the *only* UNIX shell loop that's missing from the Perl
language. Until now!
SYNOPSIS
NOTE: In the following, the enclosing square brackets (not
typed) identify optional elements, and vertical bars indicate
mutually-exclusive choices:
select [[my|local|our<]> scalar_var] ( [LIST] ) { [CODE] }
The required elements are the keyword "select", the *parentheses*,
and the *curly braces*. See "SYNTAX" for details.
ELEMENTARY EXAMPLE
ship2me2.plx
use Shell::POSIX::Select qw($Heading $Prompt);
$Heading='Select a Shipper' ;
$Prompt='Enter Vendor Number: ' ;
select $shipper ( 'UPS', 'FedEx' ) {
print "\nYou chose: $shipper\n";
last;
}
ship ($shipper, $ARGV[0]); # prints confirmation message
OUTPUT
ship2me2.plx '42 hemp toothbrushes'
*Select a Shipper*
1) UPS 2) FedEx
Enter Vendor Number: 2
You chose: FedEx
Your order has been processed. Thanks for your business!
BENEFITS
What's so great about this loop? It automates the generation of a
numbered menu of choices, prompts for a choice, proofreads that
choice and complains if it's invalid (at least in this enhanced
implementation), and executes a code-block with a variable set to
the chosen value. That saves a lot of coding for interactive
programs -- especially if the menu consists of many values!
The benefit of bringing this loop to Perl is that it obviates the
need for future programmers to reinvent the *Choose-From-A-Menu*
wheel.
EXPORTS: Default
$Reply
This variable is "local"ized to each "select" loop, and provides
the menu-number of the most recent valid selection.
EXPORTS: Optional
$Heading
$Prompt
$Eof
SCRIPTS
browse_images
browse_jpeg
browse_records
delete_file
lc_filename
long_listem
menu_ls
order
perl_man
pick
pick_file
AUTHOR
Tim Maher
Consultix
yumpy@cpan.org
http://www.teachmeperl.com
ACKNOWLEDGEMENTS
I probably never would have even attempted to write this module if
it weren't for the provision of Filter::Simple by Damian Conway,
which I ruthlessly exploited to make a hard job easy.
*The Damian* also gave useful tips during the module's
development, for which I'm grateful.
I *definitely* wouldn't have ever written this module, if I hadn't
found myself writing a chapter on *Looping* for my upcoming
Manning Publications book, and once again lamenting the fact that
the most friendly Shell loop was missing from Perl. In a fit of
zeal, I decided to rectify that oversight! 8-}
For more examples of how this loop can be used in Perl programs,
watch for my upcoming book, *Minimal Perl: for Shell Users and
Programmers* (see <http://teachmeperl.com/mp4sh.html>) in early
fall, 2003.
SEE ALSO
man ksh # on UNIX or UNIX-like systems
man bash # on UNIX or UNIX-like systems
DON'T SEE ALSO
perldoc -f select, which has nothing to do with this module (the
names just happen to match up).
LICENSE
Copyright (C) 2002-2003, Timothy F. Maher. All rights reserved.
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.