You may or may not care to peruse the underdocumented Getopt::Plus, which has similar aims to scriptalicious, but quite a different approach.
Mx. >-----Original Message----- >From: Sam Vilain [mailto:[EMAIL PROTECTED] >Sent: Thursday, April 08, 2004 7:57 AM >To: [EMAIL PROTECTED] >Subject: New module: Scriptalicious > > >Hi all, > >I've decided that instead of helping the Perl world by single-handedly >spearheading one of the most ambitious tasks to ever hit CPAN, >I'm going >to help contribute to its gradual decline by releasing yet another >reinvented wheel. Muhahaha! Didn't see that coming, did you? > >The program listed in the manual page displays the following when run >with `-h' : > >pu - an uncarved block of wood > >Usage: pu [options] arguments > > This script's function is to be a blank example that many >great and simple scripts may be built upon. > > Remember, you cannot carve rotten wood. > >Command line options: > > -h, --help Display a program usage screen and exit. > -V, --version Display program version and exit. > -v, --verbose Verbose command execution, displaying things > like the commands run, their output, etc. > -q, --quiet Suppress all normal program output; only > display errors and warnings. > -d, --debug Display output to help someone debug this > script, not the process going on. > >See `perldoc t/pu.pl' for more information. > >Here is the man page for Scriptalicious: > >NAME > Scriptalicious - Delicious scripting goodies > >SYNOPSIS > use Scriptalicious > -progname => "pu", > -version => $VERSION; > > my $url = "."; > getopt("u|url" => \$url); > > run("echo", "doing something with $url"); > my $output = capture("svn", "info", $url); > > __END__ > > =head1 NAME > > pu - an uncarved block of wood > > =head1 SYNOPSIS > > pu [options] arguments > > =head1 DESCRIPTION > > This script's function is to be a blank example that many > great and simple scripts may be built upon. > > Remember, you cannot carve rotten wood. > > =head1 COMMAND LINE OPTIONS > > =over > > =item B<-h, --help> > > Display a program usage screen and exit. > > =item B<-V, --version> > > Display program version and exit. > > =item B<-v, --verbose> > > Verbose command execution, displaying things like the > commands run, their output, etc. > > =item B<-q, --quiet> > > Suppress all normal program output; only display errors and > warnings. > > =item B<-d, --debug> > > Display output to help someone debug this script, not the > process going on. > > =back > >DESCRIPTION > This module helps you write scripts, quickly. Just >include the above > as a template. Unfortunately, it is not possible to >have a `use' > dependency automatically add structure to your POD yet, so you >have to > include the above manually. > > To avoid all that unnecessary explicit importing of >symbols, the fol- > lowing symbols and functions are exported into the caller's >namespace: > > getopt(@getopt_args) > This just calls Getopt::Long::GetOptions (see >Getopt::Long for > details). It automatically adds to the arguments >you give it >some > "standard" command line options. > > $VERBOSE > Set to 0 by default, and 1 if "-v" or "--verbose" was found >during > the call to "getopt()". Extra "-v"'s or "--debug" >will push this > variable higher. If "-q" or <--quiet> is >specified, this will be > less than one. > > $PROGNAME > It is recommended that you only ever read this >variable, and pass > it in via the import. This is not automatically extracted >from the > POD for performance reasons. > > getopt(@getopt_args) > Fetch arguments via "Getopt::Long::GetOptions". >The "bundling" > option is enabled by default - which differs from the >standard con- > figuration of Getopt::Long. To alter the >configuration, simply > call "Getopt::Long::config". See Getopt::Long for >more informa- > tion. > > say "something" > Prints a message to standard output, unless quiet >mode ("-q" or > "--quiet") was specified. For normal program messages. > > mutter "progress" > Prints a message to standard output, if verbose >mode ("-v") or > debug mode ("-d") is enabled (ie, if "$VERBOSE > 0"). For >messages > designed to help a user of the script to see more >information >about > what is going on. > > whisper "detail" > Prints a message to standard output, if debug mode ("-d") is > enabled or multiple verbose options were passed (ie, if >"$VERBOSE > > 1"). For messages designed to help a person >debugging the script > to see more information about what is going on >internally to the > script. > > abort "won't go to sea in a storm" > Prints a short program usage message (extracted >from the POD >synop- > sis) and exits with an error code. > > moan "weather is miserable" > Prints a warning to standard error. It is preceded >with the text > "warning:". The program does not exit. > > barf "hit an iceberg" > Prints a warning to standard error. It is preceded >with the text > "warning:". The program does not exit. > > run("command", "arg1", "arg2") > Runs a command or closure, barf's with a relevant error >message if > there is a problem. Program output is suppressed unless >running in > verbose mode. > > run_err("command", "arg2", "arg1") > Same as run, but returns the error code rather than >assuming that > the command will successfully complete. Again, >output it sup- > pressed. > > capture("command", "1gra", "2gra") > runs a command, capturing its output, barfs if there is a >problem. > Returns the output of the command as a list. > > capture_err("command", "foo") > Works as capture, but the first returned item is the error >code of > the command ($?) rather than the first line of its output. > > Usage: > > my ($rc, @output) = capture_err("somecommand", @args); > >AUTHOR > Sam Vilain, [EMAIL PROTECTED] > >-- >Sam Vilain, sam /\T vilain |><>T net, PGP key ID: 0x05B52F13 >(include my PGP key ID in personal replies to avoid spam filtering) >